System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1ac238ef212a95cc3176a75ffd1e51b9ce29a30e:


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 20 7c 7c 20 4e 45  TANDARD_20 || NE
96f0: 54 5f 53 54 41 4e 44 41 52 44 5f 32 31 0d 0a 20  T_STANDARD_21.. 
9700: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
9710: 22 6c 69 62 63 22 2c 0d 0a 23 65 6c 73 65 0d 0a  "libc",..#else..
9720: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
9730: 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a  ("__Internal",..
9740: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
9750: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
9760: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9770: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9780: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9790: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
97a0: 20 75 6e 61 6d 65 28 6f 75 74 20 75 74 73 6e 61   uname(out utsna
97b0: 6d 65 5f 69 6e 74 65 72 6f 70 20 6e 61 6d 65 29  me_interop name)
97c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9810: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
9820: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9830: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
9840: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
9850: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
9860: 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c 6f 70  native Unix dlop
9870: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  en..      /// fu
9880: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
9890: 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61   POSIX documenta
98a0: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
98b0: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
98c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
98d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
98e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
98f0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9900: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
9910: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
9920: 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  f the executable
9930: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
9940: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9950: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9960: 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20  name="mode">..  
9970: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73      /// This mus
9980: 74 20 62 65 20 61 20 63 6f 6d 62 69 6e 61 74 69  t be a combinati
9990: 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 69 76 69  on of the indivi
99a0: 64 75 61 6c 20 62 69 74 20 66 6c 61 67 73 20 52  dual bit flags R
99b0: 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20  TLD_LAZY,..     
99c0: 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52   /// RTLD_NOW, R
99d0: 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f  TLD_GLOBAL, and/
99e0: 6f 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a  or RTLD_LOCAL...
99f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
9a00: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
9a10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
9a20: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
9a30: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
9a40: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
9a50: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
9a60: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
9a70: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66   </returns>..#if
9a80: 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f 32 30   NET_STANDARD_20
9a90: 20 7c 7c 20 4e 45 54 5f 53 54 41 4e 44 41 52 44   || NET_STANDARD
9aa0: 5f 32 31 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  _21..      [DllI
9ab0: 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22 2c 0d 0a  mport("libdl",..
9ac0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c  #else..      [Dl
9ad0: 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65 72  lImport("__Inter
9ae0: 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  nal",..#endif.. 
9af0: 20 20 20 20 20 20 20 20 20 45 6e 74 72 79 50 6f           EntryPo
9b00: 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22 2c 0d  int = "dlopen",.
9b10: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
9b20: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9b30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9b40: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
9b50: 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69 2c 0d  = CharSet.Ansi,.
9b60: 0a 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46  .          BestF
9b70: 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73  itMapping = fals
9b80: 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70  e, ThrowOnUnmapp
9b90: 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c  ableChar = true,
9ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c  ..          SetL
9bb0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
9bc0: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
9bd0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9be0: 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28 73 74  IntPtr dlopen(st
9bf0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 69  ring fileName, i
9c00: 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20 20 20  nt mode);....   
9c10: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
9c60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
9c70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
9c80: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
9c90: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
9ca0: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 55  aps the native U
9cb0: 6e 69 78 20 64 6c 63 6c 6f 73 65 0d 0a 20 20 20  nix dlclose..   
9cc0: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
9cd0: 20 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20    See the POSIX 
9ce0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
9cf0: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
9d00: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
9d10: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
9d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9d40: 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
9d50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
9d60: 20 68 61 6e 64 6c 65 20 74 6f 20 74 68 65 20 6c   handle to the l
9d70: 6f 61 64 65 64 20 6e 61 74 69 76 65 20 6c 69 62  oaded native lib
9d80: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
9d90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
9da0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9db0: 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 20 75        /// Zero u
9dc0: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
9dd0: 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 20 66 61 69   non-zero on fai
9de0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
9df0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66   </returns>..#if
9e00: 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f 32 30   NET_STANDARD_20
9e10: 20 7c 7c 20 4e 45 54 5f 53 54 41 4e 44 41 52 44   || NET_STANDARD
9e20: 5f 32 31 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  _21..      [DllI
9e30: 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22 2c 0d 0a  mport("libdl",..
9e40: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c  #else..      [Dl
9e50: 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65 72  lImport("__Inter
9e60: 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  nal",..#endif.. 
9e70: 20 20 20 20 20 20 20 20 20 45 6e 74 72 79 50 6f           EntryPo
9e80: 69 6e 74 20 3d 20 22 64 6c 63 6c 6f 73 65 22 2c  int = "dlclose",
9e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c  ..          Call
9ea0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9eb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9ec0: 6e 2e 43 64 65 63 6c 2c 20 53 65 74 4c 61 73 74  n.Cdecl, SetLast
9ed0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
9ee0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
9ef0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
9f00: 20 64 6c 63 6c 6f 73 65 28 49 6e 74 50 74 72 20   dlclose(IntPtr 
9f10: 6d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20  module);....    
9f20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9f70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
9f80: 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
9f90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9fa0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
9fb0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
9fc0: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
9fd0: 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79  ion calls lazily
9fe0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9ff0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
a000: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
a010: 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78  t RTLD_LAZY = 0x
a020: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  1;....      ////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
a080: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a090: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
a0a0: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
a0b0: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
a0c0: 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20   immediately... 
a0d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a0e0: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
a0f0: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
a100: 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d  LD_NOW = 0x2;...
a110: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
a120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a160: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a180: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
a190: 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d  open(), make sym
a1a0: 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76  bols globally av
a1b0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
a1c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a1d0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
a1e0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c  onst int RTLD_GL
a1f0: 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d  OBAL = 0x100;...
a200: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
a210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a260: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a270: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
a280: 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65  open(), opposite
a290: 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c   of RTLD_GLOBAL,
a2a0: 20 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74   and the default
a2b0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a2c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
a2d0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
a2e0: 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30  t RTLD_LOCAL = 0
a2f0: 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  x000;....      /
a300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
a350: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a360: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
a370: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
a380: 74 68 65 20 64 65 66 61 75 6c 74 73 20 75 73 65  the defaults use
a390: 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e  d by this class.
a3a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a3b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
a3c0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
a3d0: 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d 20   RTLD_DEFAULT = 
a3e0: 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44 5f  RTLD_NOW | RTLD_
a3f0: 47 4c 4f 42 41 4c 3b 0d 0a 20 20 20 20 20 20 23  GLOBAL;..      #
a400: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a410: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a460: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
a470: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
a480: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a490: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65  .      /// These
a4a0: 20 61 72 65 20 74 68 65 20 63 68 61 72 61 63 74   are the charact
a4b0: 65 72 73 20 75 73 65 64 20 74 6f 20 73 65 70 61  ers used to sepa
a4c0: 72 61 74 65 20 74 68 65 20 73 74 72 69 6e 67 20  rate the string 
a4d0: 66 69 65 6c 64 73 20 77 69 74 68 69 6e 0d 0a 20  fields within.. 
a4e0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 61 77       /// the raw
a4f0: 20 62 75 66 66 65 72 20 72 65 74 75 72 6e 65 64   buffer returned
a500: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
a510: 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20 50 2f 49  f="uname" /> P/I
a520: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a 20  nvoke method... 
a530: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a540: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
a550: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
a560: 6c 79 20 63 68 61 72 5b 5d 20 75 74 73 4e 61 6d  ly char[] utsNam
a570: 65 53 65 70 61 72 61 74 6f 72 73 20 3d 20 7b 20  eSeparators = { 
a580: 27 5c 30 27 20 7d 3b 0d 0a 20 20 20 20 20 20 23  '\0' };..      #
a590: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a5a0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a5f0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
a600: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
a610: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a620: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
a630: 69 73 20 6d 65 74 68 6f 64 20 69 73 20 61 20 77  is method is a w
a640: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
a650: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 75 6e 61  e <see cref="una
a660: 6d 65 22 20 2f 3e 20 50 2f 49 6e 76 6f 6b 65 0d  me" /> P/Invoke.
a670: 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f  .      /// metho
a680: 64 20 74 68 61 74 20 65 78 74 72 61 63 74 73 20  d that extracts 
a690: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
a6a0: 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 73  human readable s
a6b0: 74 72 69 6e 67 73 20 66 72 6f 6d 0d 0a 20 20 20  trings from..   
a6c0: 20 20 20 2f 2f 2f 20 74 68 65 20 72 61 77 20 62     /// the raw b
a6d0: 75 66 66 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  uffer...      //
a6e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a6f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a700: 61 6d 65 3d 22 75 74 73 4e 61 6d 65 22 3e 0d 0a  ame="utsName">..
a710: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73        /// This s
a720: 74 72 75 63 74 75 72 65 2c 20 77 68 69 63 68 20  tructure, which 
a730: 63 6f 6e 74 61 69 6e 73 20 73 74 72 69 6e 67 73  contains strings
a740: 2c 20 77 69 6c 6c 20 62 65 20 66 69 6c 6c 65 64  , will be filled
a750: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20   based on the.. 
a760: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 70 6c       /// data pl
a770: 61 63 65 64 20 69 6e 20 74 68 65 20 72 61 77 20  aced in the raw 
a780: 62 75 66 66 65 72 20 72 65 74 75 72 6e 65 64 20  buffer returned 
a790: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
a7a0: 3d 22 75 6e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20  ="uname" />..   
a7b0: 20 20 20 2f 2f 2f 20 50 2f 49 6e 76 6f 6b 65 20     /// P/Invoke 
a7c0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
a7d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
a7e0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
a7f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
a800: 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
a810: 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65  s; otherwise, ze
a820: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
a830: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
a840: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a850: 20 62 6f 6f 6c 20 47 65 74 4f 73 56 65 72 73 69   bool GetOsVersi
a860: 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20 20 20 20  onInfo(..       
a870: 20 20 20 72 65 66 20 75 74 73 6e 61 6d 65 20 75     ref utsname u
a880: 74 73 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  tsName..        
a890: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
a8a0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
a8b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a8c0: 20 20 20 20 20 20 20 20 75 74 73 6e 61 6d 65 5f          utsname_
a8d0: 69 6e 74 65 72 6f 70 20 75 74 66 4e 61 6d 65 49  interop utfNameI
a8e0: 6e 74 65 72 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20  nterop;....     
a8f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 75 6e 61           if (una
a900: 6d 65 28 6f 75 74 20 75 74 66 4e 61 6d 65 49 6e  me(out utfNameIn
a910: 74 65 72 6f 70 29 20 3c 20 30 29 0d 0a 20 20 20  terop) < 0)..   
a920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a930: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a950: 20 28 75 74 66 4e 61 6d 65 49 6e 74 65 72 6f 70   (utfNameInterop
a960: 2e 62 75 66 66 65 72 20 3d 3d 20 6e 75 6c 6c 29  .buffer == null)
a970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a980: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
a990: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a9a0: 20 20 20 73 74 72 69 6e 67 20 62 75 66 66 65 72     string buffer
a9b0: 41 73 53 74 72 69 6e 67 20 3d 20 45 6e 63 6f 64  AsString = Encod
a9c0: 69 6e 67 2e 55 54 46 38 2e 47 65 74 53 74 72 69  ing.UTF8.GetStri
a9d0: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
a9e0: 20 20 20 20 20 20 20 75 74 66 4e 61 6d 65 49 6e         utfNameIn
a9f0: 74 65 72 6f 70 2e 62 75 66 66 65 72 29 3b 0d 0a  terop.buffer);..
aa00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa10: 69 66 20 28 28 62 75 66 66 65 72 41 73 53 74 72  if ((bufferAsStr
aa20: 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  ing == null) || 
aa30: 28 75 74 73 4e 61 6d 65 53 65 70 61 72 61 74 6f  (utsNameSeparato
aa40: 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  rs == null))..  
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa60: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
aa70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62  .              b
aa80: 75 66 66 65 72 41 73 53 74 72 69 6e 67 20 3d 20  ufferAsString = 
aa90: 62 75 66 66 65 72 41 73 53 74 72 69 6e 67 2e 54  bufferAsString.T
aaa0: 72 69 6d 28 75 74 73 4e 61 6d 65 53 65 70 61 72  rim(utsNameSepar
aab0: 61 74 6f 72 73 29 3b 0d 0a 0d 0a 20 20 20 20 20  ators);....     
aac0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
aad0: 5d 20 70 61 72 74 73 20 3d 20 62 75 66 66 65 72  ] parts = buffer
aae0: 41 73 53 74 72 69 6e 67 2e 53 70 6c 69 74 28 0d  AsString.Split(.
aaf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab00: 20 20 20 75 74 73 4e 61 6d 65 53 65 70 61 72 61     utsNameSepara
ab10: 74 6f 72 73 2c 20 53 74 72 69 6e 67 53 70 6c 69  tors, StringSpli
ab20: 74 4f 70 74 69 6f 6e 73 2e 52 65 6d 6f 76 65 45  tOptions.RemoveE
ab30: 6d 70 74 79 45 6e 74 72 69 65 73 29 3b 0d 0a 0d  mptyEntries);...
ab40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
ab50: 66 20 28 70 61 72 74 73 20 3d 3d 20 6e 75 6c 6c  f (parts == null
ab60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ab70: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
ab80: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
ab90: 20 20 20 20 75 74 73 6e 61 6d 65 20 6c 6f 63 61      utsname loca
aba0: 6c 55 74 73 4e 61 6d 65 20 3d 20 6e 65 77 20 75  lUtsName = new u
abb0: 74 73 6e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  tsname();....   
abc0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
abd0: 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 31  arts.Length >= 1
abe0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
abf0: 20 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d       localUtsNam
ac00: 65 2e 73 79 73 6e 61 6d 65 20 3d 20 70 61 72 74  e.sysname = part
ac10: 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[0];....       
ac20: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
ac30: 2e 4c 65 6e 67 74 68 20 3e 3d 20 32 29 0d 0a 20  .Length >= 2).. 
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac50: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 6e 6f   localUtsName.no
ac60: 64 65 6e 61 6d 65 20 3d 20 70 61 72 74 73 5b 31  dename = parts[1
ac70: 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
ac80: 20 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65      if (parts.Le
ac90: 6e 67 74 68 20 3e 3d 20 33 29 0d 0a 20 20 20 20  ngth >= 3)..    
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
acb0: 63 61 6c 55 74 73 4e 61 6d 65 2e 72 65 6c 65 61  calUtsName.relea
acc0: 73 65 20 3d 20 70 61 72 74 73 5b 32 5d 3b 0d 0a  se = parts[2];..
acd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ace0: 69 66 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68  if (parts.Length
acf0: 20 3e 3d 20 34 29 0d 0a 20 20 20 20 20 20 20 20   >= 4)..        
ad00: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55            localU
ad10: 74 73 4e 61 6d 65 2e 76 65 72 73 69 6f 6e 20 3d  tsName.version =
ad20: 20 70 61 72 74 73 5b 33 5d 3b 0d 0a 0d 0a 20 20   parts[3];....  
ad30: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ad40: 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20  parts.Length >= 
ad50: 35 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5)..            
ad60: 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61        localUtsNa
ad70: 6d 65 2e 6d 61 63 68 69 6e 65 20 3d 20 70 61 72  me.machine = par
ad80: 74 73 5b 34 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ts[4];....      
ad90: 20 20 20 20 20 20 20 20 75 74 73 4e 61 6d 65 20          utsName 
ada0: 3d 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 3b 0d  = localUtsName;.
adb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
adc0: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
add0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ade0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
adf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ae00: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
ae10: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
ae20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
ae30: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
ae40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
ae50: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65  dregion..  }..#e
ae60: 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
ae70: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aec0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
aed0: 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74  on Unmanaged Int
aee0: 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61  erop Methods Sta
aef0: 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e 33 32  tic Class (Win32
af00: 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  )..  /// <summar
af10: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63  y>..  /// This c
af20: 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f  lass declares P/
af30: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74  Invoke methods t
af40: 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 57 69  o call native Wi
af50: 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f  n32 APIs...  ///
af60: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66   </summary>..#if
af70: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
af80: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b  CTFRAMEWORK..  [
af90: 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65  SuppressUnmanage
afa0: 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a  dCodeSecurity]..
afb0: 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e  #endif..  intern
afc0: 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
afd0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
afe0: 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a 20  odsWin32..  {.. 
aff0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b040: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b050: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
b060: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
b070: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
b080: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
b090: 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61   Win32 LoadLibra
b0a0: 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  ry..      /// fu
b0b0: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
b0c0: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
b0d0: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
b0e0: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
b0f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
b100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
b110: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
b120: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
b130: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
b140: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
b150: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
b160: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
b170: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
b180: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
b190: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
b1a0: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
b1b0: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
b1c0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
b1d0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
b1e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
b1f0: 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54  urns>..#if !PLAT
b200: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b210: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c  EWORK..      [Dl
b220: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
b230: 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  2",..#else..    
b240: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
b250: 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  redll",..#endif.
b260: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
b270: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b280: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b290: 2e 57 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74  .Winapi, CharSet
b2a0: 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c   = CharSet.Auto,
b2b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
b2c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73 74  ..          Best
b2e0: 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c  FitMapping = fal
b2f0: 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70  se, ThrowOnUnmap
b300: 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65  pableChar = true
b310: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
b320: 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f       SetLastErro
b330: 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20  r = true)]..    
b340: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b350: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b360: 4c 6f 61 64 4c 69 62 72 61 72 79 28 73 74 72 69  LoadLibrary(stri
b370: 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  ng fileName);...
b380: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
b390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
b3e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b3f0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
b400: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
b410: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
b420: 74 69 76 65 20 57 69 6e 33 32 20 47 65 74 53 79  tive Win32 GetSy
b430: 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20  stemInfo..      
b440: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
b450: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
b460: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
b470: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
b480: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
b490: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
b4a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b4b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
b4c0: 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22  ame="systemInfo"
b4d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
b4e0: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
b4f0: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 20 74 6f  ion structure to
b500: 20 62 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79   be filled in by
b510: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a   the function...
b520: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b530: 6d 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  m>..#if !PLATFOR
b540: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b550: 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  RK..      [DllIm
b560: 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c  port("kernel32",
b570: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
b580: 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64  DllImport("cored
b590: 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ll",..#endif..  
b5a0: 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43          CallingC
b5b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b5c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
b5d0: 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e  napi)]..      in
b5e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b5f0: 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73  tern void GetSys
b600: 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54  temInfo(out SYST
b610: 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e  EM_INFO systemIn
b620: 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  fo);....      //
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b670: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
b680: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b690: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75      /// This enu
b6a0: 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e  meration contain
b6b0: 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76  s the possible v
b6c0: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72  alues for the pr
b6d0: 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f  ocessor..      /
b6e0: 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20  // architecture 
b6f0: 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73  field of the sys
b700: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
b710: 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
b720: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b730: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
b740: 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41   enum ProcessorA
b750: 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73  rchitecture : us
b760: 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20  hort /* COMPAT: 
b770: 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20  Win32. */..     
b780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
b790: 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20  tel = 0,..      
b7a0: 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20      MIPS = 1,.. 
b7b0: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d           Alpha =
b7c0: 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50   2,..          P
b7d0: 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20  owerPC = 3,..   
b7e0: 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d         SHx = 4,.
b7f0: 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d  .          ARM =
b800: 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49   5,..          I
b810: 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20  A64 = 6,..      
b820: 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c      Alpha64 = 7,
b830: 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c  ..          MSIL
b840: 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 8,..         
b850: 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20   AMD64 = 9,..   
b860: 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57         IA32_on_W
b870: 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20  in64 = 10,..    
b880: 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20        Unknown = 
b890: 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d  0xFFFF..      }.
b8a0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
b8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8f0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
b900: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b910: 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72  // This structur
b920: 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72  e contains infor
b930: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
b940: 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65   current compute
b950: 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f  r. This..      /
b960: 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20  // includes the 
b970: 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20  processor type, 
b980: 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72  page size, memor
b990: 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63  y addresses, etc
b9a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b9b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b  ummary>..      [
b9c0: 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
b9d0: 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
b9e0: 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  al)]..      inte
b9f0: 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53 54  rnal struct SYST
ba00: 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b  EM_INFO..      {
ba10: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
ba20: 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68  ic ProcessorArch
ba30: 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73  itecture wProces
ba40: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
ba50: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
ba60: 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72  ic ushort wReser
ba70: 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ved; /* NOT USED
ba80: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
ba90: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67  ublic uint dwPag
baa0: 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53  eSize; /* NOT US
bab0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
bac0: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c   public IntPtr l
bad0: 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74  pMinimumApplicat
bae0: 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e  ionAddress; /* N
baf0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
bb00: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
bb10: 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70  Ptr lpMaximumApp
bb20: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
bb30: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
bb40: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
bb50: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
bb60: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
bb70: 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72   uint dwActivePr
bb80: 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20  ocessorMask; /* 
bb90: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 23 65 6c  NOT USED */..#el
bba0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  se..          pu
bbb0: 62 6c 69 63 20 49 6e 74 50 74 72 20 64 77 41 63  blic IntPtr dwAc
bbc0: 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73  tiveProcessorMas
bbd0: 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  k; /* NOT USED *
bbe0: 2f 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  /..#endif..     
bbf0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
bc00: 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65   dwNumberOfProce
bc10: 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53  ssors; /* NOT US
bc20: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
bc30: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50   public uint dwP
bc40: 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a  rocessorType; /*
bc50: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
bc60: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
bc70: 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e  int dwAllocation
bc80: 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20  Granularity; /* 
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 4c  hort wProcessorL
bcc0: 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  evel; /* NOT USE
bcd0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
bce0: 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50  public ushort wP
bcf0: 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e  rocessorRevision
bd00: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
bd10: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a  ..      }..  }..
bd20: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
bd30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
bd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
bd80: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
bd90: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
bda0: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
bdb0: 61 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20  ass (SQLite)..  
bdc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bdd0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
bde0: 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b  declares P/Invok
bdf0: 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c  e methods to cal
be00: 6c 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l native SQLite 
be10: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
be20: 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
be30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
be40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70  AMEWORK..  [Supp
be50: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
be60: 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64  eSecurity]..#end
be70: 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  if..  internal s
be80: 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61  tatic class Unsa
be90: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
bea0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70 75 62 6c  .  {..      publ
beb0: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
bec0: 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67 65  ExceptionMessage
bed0: 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20 20 20 20  Format =..      
bee0: 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
bef0: 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22  ption in \"{0}\"
bf00: 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a   method: {1}";..
bf10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf60: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
bf70: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
bf80: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
bf90: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
bfa0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
bfb0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
bfc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
bfd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
bfe0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
bff0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
c000: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
c010: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
c020: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c030: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c040: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
c050: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
c060: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
c070: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
c0c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c0d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c0e0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
c0f0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
c100: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
c110: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
c120: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c130: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
c140: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
c150: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
c160: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
c170: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
c180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
c1d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c1e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
c1f0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
c200: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
c210: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
c220: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
c230: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
c240: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
c250: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c260: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
c270: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
c280: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
c290: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
c2a0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
c2b0: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
c2c0: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
c2d0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
c2e0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
c2f0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
c300: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c350: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
c360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c370: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
c380: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
c390: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
c3a0: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
c3b0: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
c3c0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
c3d0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
c3e0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
c3f0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
c400: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
c410: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
c420: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c430: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
c440: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
c450: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
c460: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
c470: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
c480: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
c490: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
c4a0: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
c4b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
c4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
c510: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
c520: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
c530: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
c540: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
c550: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c560: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
c570: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c580: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
c590: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
c5a0: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
c5b0: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
c5c0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
c5d0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
c5e0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
c5f0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
c600: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
c610: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c620: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
c630: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
c640: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
c650: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
c660: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
c670: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
c680: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
c690: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
c6f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c700: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
c710: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
c720: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
c730: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
c740: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
c750: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
c760: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
c770: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
c780: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
c790: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
c7a0: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
c7b0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
c7c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c7d0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
c7e0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
c7f0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
c800: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
c810: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
c820: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
c830: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
c840: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
c850: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
c860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
c8b0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
c8c0: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
c8d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c8e0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
c8f0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
c900: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
c910: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
c920: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
c930: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
c940: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
c950: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
c960: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
c970: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
c980: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c990: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
c9a0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
c9b0: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
c9c0: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
c9d0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
ca30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ca40: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
ca50: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
ca60: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
ca70: 65 65 6e 20 74 61 72 67 65 74 20 66 72 61 6d 65  een target frame
ca80: 77 6f 72 6b 20 6e 61 6d 65 73 0d 0a 20 20 20 20  work names..    
ca90: 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 69 72 20    /// and their 
caa0: 61 73 73 6f 63 69 61 74 65 64 20 28 4e 75 47 65  associated (NuGe
cab0: 74 29 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73  t) abbreviations
cac0: 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67  .  These mapping
cad0: 73 20 61 72 65 20 6f 6e 6c 79 0d 0a 20 20 20 20  s are only..    
cae0: 20 20 2f 2f 2f 20 75 73 65 64 20 62 79 20 74 68    /// used by th
caf0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 41 62 62  e <see cref="Abb
cb00: 72 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61  reviateTargetFra
cb10: 6d 65 77 6f 72 6b 22 20 2f 3e 20 6d 65 74 68 6f  mework" /> metho
cb20: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
cb30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cb40: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44  private static D
cb50: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
cb60: 2c 20 73 74 72 69 6e 67 3e 20 74 61 72 67 65 74  , string> target
cb70: 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69  FrameworkAbbrevi
cb80: 61 74 69 6f 6e 73 3b 0d 0a 0d 0a 20 20 20 20 20  ations;....     
cb90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
cbe0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cbf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
cc00: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
cc10: 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62  s the mappings b
cc20: 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72  etween processor
cc30: 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
cc40: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61       /// names a
cc50: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  nd platform name
cc60: 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e  s.  These mappin
cc70: 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20  gs are now used 
cc80: 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f  for two..      /
cc90: 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69  // purposes.  Fi
cca0: 72 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73  rst, they are us
ccb0: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
ccc0: 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  if the assembly 
ccd0: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
cce0: 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75  base should be u
ccf0: 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
cd00: 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73  he location, bas
cd10: 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20  ed upon whether 
cd20: 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  one..      /// o
cd30: 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61  r more of the na
cd40: 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72  med sub-director
cd50: 69 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e  ies exist within
cd60: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
cd70: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
cd80: 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65  se.  Second, the
cd90: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73  y are used to as
cda0: 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20  sist in loading 
cdb0: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
cdc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  .      /// SQLit
cdd0: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
cde0: 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72  ly into the curr
cdf0: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
ce00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ce10: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
ce20: 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e  e static Diction
ce30: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
ce40: 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ng> processorArc
ce50: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
ce60: 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ms;....      ///
ce70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ceb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
cec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ced0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
cee0: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
cef0: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
cf00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
cf10: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
cf20: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
cf30: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
cf40: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
cf50: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
cf60: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
cf70: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
cf80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cf90: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
cfa0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
cfb0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
cfc0: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
cfd0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
d020: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d030: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
d040: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
d050: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
d060: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
d070: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
d080: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
d090: 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ory" /> method w
d0a0: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
d0b0: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
d0c0: 2f 2f 20 73 75 69 74 61 62 6c 65 20 61 73 73 65  // suitable asse
d0d0: 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 20  mbly directory. 
d0e0: 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
d0f0: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
d100: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
d110: 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
d120: 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68 69 73   will check this
d130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c  ..      /// fiel
d140: 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c  d and skips call
d150: 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20  s into the <see 
d160: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
d170: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a  yDirectory" />..
d180: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
d190: 20 77 68 65 6e 65 76 65 72 20 69 74 20 69 73 20   whenever it is 
d1a0: 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  non-zero...     
d1b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d1c0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
d1d0: 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73  tatic bool noAss
d1e0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
d1f0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
d200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d240: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
d250: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
d260: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 63  // This is the c
d270: 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61 6c  ached return val
d280: 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ue from the..   
d290: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
d2a0: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
d2b0: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
d2c0: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74  d -OR- null if t
d2d0: 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  hat method..    
d2e0: 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72 20    /// has never 
d2f0: 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69 64  returned a valid
d300: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
d310: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d320: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
d330: 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68 65  tic string cache
d340: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
d350: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  me;....      ///
d360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3a0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
d3b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d3c0: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73     /// When this
d3d0: 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65   field is non-ze
d3e0: 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65 73  ro, it indicates
d3f0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
d400: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d410: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d420: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 6e   /> method was n
d430: 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74  ot able to locat
d440: 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  e a..      /// s
d450: 75 69 74 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66  uitable XML conf
d460: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
d470: 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20 20 20 20  ame.  The..     
d480: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
d490: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
d4a0: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
d4b0: 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b  ethod will check
d4c0: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   this..      ///
d4d0: 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73   field and skips
d4e0: 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20   calls into the 
d4f0: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d500: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d510: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d   />..      /// m
d520: 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69  ethod whenever i
d530: 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a  t is non-zero...
d540: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d550: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
d560: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
d570: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
d580: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ame;..      #end
d590: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d5f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d600: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f        /// For no
d610: 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73  w, this method s
d620: 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20  imply calls the 
d630: 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f  Initialize metho
d640: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
d650: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d660: 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74  static UnsafeNat
d670: 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20  iveMethods()..  
d680: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d690: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a   Initialize();..
d6a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d6b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
d700: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d710: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
d720: 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  pts to initializ
d730: 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79 20  e this class by 
d740: 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20  pre-loading the 
d750: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
d760: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
d770: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
d780: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
d790: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
d7a0: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
d7b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d7c0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
d7d0: 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61  atic void Initia
d7e0: 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lize()..      {.
d7f0: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
d800: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
d810: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
d820: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d830: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
d840: 20 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74   Create the list
d850: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
d860: 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69  that will contai
d870: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  n..          // 
d880: 20 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f        various co
d890: 75 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62  unts used in deb
d8a0: 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e  ugging, includin
d8b0: 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  g the..         
d8c0: 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72   //       number
d8d0: 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73   of times each s
d8e0: 65 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73  etting value has
d8f0: 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20   been read...   
d900: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d910: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
d920: 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65  nitialize();..#e
d930: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
d940: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d950: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d960: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
d970: 68 65 63 6b 20 69 66 20 61 20 64 65 62 75 67 67  heck if a debugg
d980: 65 72 20 6e 65 65 64 73 20 74 6f 20 62 65 20 61  er needs to be a
d990: 74 74 61 63 68 65 64 20 62 65 66 6f 72 65 20 64  ttached before d
d9a0: 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20 20 20 20  oing any..      
d9b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 61      //       rea
d9c0: 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  l work...       
d9d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d9e0: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4d   HelperMethods.M
d9f0: 61 79 62 65 42 72 65 61 6b 49 6e 74 6f 44 65 62  aybeBreakIntoDeb
da00: 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  ugger();....#if 
da10: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
da20: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
da30: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
da40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
da50: 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
da60: 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
da70: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
da80: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
da90: 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64   the "No_PreLoad
daa0: 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d  SQLite" environm
dab0: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
dac0: 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20  set (to..       
dad0: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74     //       anyt
dae0: 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20  hing), skip all 
daf0: 6f 66 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63  of our special c
db00: 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72  ode and simply r
db10: 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eturn...        
db20: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
db30: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
db40: 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  lue("No_PreLoadS
db50: 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d  QLite", null) !=
db60: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
db70: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23        return;..#
db80: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
db90: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
dba0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
dbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
dbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
dbe0: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
dbf0: 65 20 74 6f 20 6b 65 65 70 20 74 68 65 73 65 20  e to keep these 
dc00: 6c 69 73 74 73 20 75 70 64 61 74 65 64 20 77 68  lists updated wh
dc10: 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
dc20: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
dc30: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
dc40: 6e 61 6d 65 73 20 28 6f 72 20 74 68 65 69 72 20  names (or their 
dc50: 61 62 62 72 65 76 69 61 74 69 6f 6e 73 29 0d 0a  abbreviations)..
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dc70: 20 20 20 20 20 20 20 2d 4f 52 2d 20 74 68 65 20         -OR- the 
dc80: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
dc90: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 28 6f 72  ecture names (or
dca0: 20 74 68 65 69 72 0d 0a 20 20 20 20 20 20 20 20   their..        
dcb0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
dcc0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 29 20 63  latform names) c
dcd0: 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  hange...        
dce0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
dcf0: 20 20 20 20 20 20 20 20 69 66 20 28 74 61 72 67          if (targ
dd00: 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65  etFrameworkAbbre
dd10: 76 69 61 74 69 6f 6e 73 20 3d 3d 20 6e 75 6c 6c  viations == null
dd20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dd30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
dd40: 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61 6d        targetFram
dd50: 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f  eworkAbbreviatio
dd60: 6e 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ns =..          
dd70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
dd80: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
dd90: 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20  g, string>(..   
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddb0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
ddc0: 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e  parer.OrdinalIgn
ddd0: 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20  oreCase);....   
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
ddf0: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62  argetFrameworkAb
de00: 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28  breviations.Add(
de10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de20: 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61          ".NETFra
de30: 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
de40: 32 2e 30 22 2c 20 22 6e 65 74 32 30 22 29 3b 0d  2.0", "net20");.
de50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
de60: 20 20 20 20 20 74 61 72 67 65 74 46 72 61 6d 65       targetFrame
de70: 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f 6e  workAbbreviation
de80: 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20  s.Add(..        
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2e                ".
dea0: 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72  NETFramework,Ver
deb0: 73 69 6f 6e 3d 76 33 2e 35 22 2c 20 22 6e 65 74  sion=v3.5", "net
dec0: 33 35 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  35");....       
ded0: 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65             targe
dee0: 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65 76  tFrameworkAbbrev
def0: 69 61 74 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20  iations.Add(..  
df00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df10: 20 20 20 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f      ".NETFramewo
df20: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 34 2e 30 22  rk,Version=v4.0"
df30: 2c 20 22 6e 65 74 34 30 22 29 3b 0d 0a 0d 0a 20  , "net40");.... 
df40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df50: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
df60: 41 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64  Abbreviations.Ad
df70: 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
df80: 20 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46            ".NETF
df90: 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e  ramework,Version
dfa0: 3d 76 34 2e 35 22 2c 20 22 6e 65 74 34 35 22 29  =v4.5", "net45")
dfb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dfc0: 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61         targetFra
dfd0: 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69  meworkAbbreviati
dfe0: 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20  ons.Add(..      
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e000: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
e010: 65 72 73 69 6f 6e 3d 76 34 2e 35 2e 31 22 2c 20  ersion=v4.5.1", 
e020: 22 6e 65 74 34 35 31 22 29 3b 0d 0a 0d 0a 20 20  "net451");....  
e030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e040: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  targetFrameworkA
e050: 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64  bbreviations.Add
e060: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e070: 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72           ".NETFr
e080: 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
e090: 76 34 2e 35 2e 32 22 2c 20 22 6e 65 74 34 35 32  v4.5.2", "net452
e0a0: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
e0b0: 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 46           targetF
e0c0: 72 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61  rameworkAbbrevia
e0d0: 74 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20  tions.Add(..    
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0f0: 20 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b    ".NETFramework
e100: 2c 56 65 72 73 69 6f 6e 3d 76 34 2e 36 22 2c 20  ,Version=v4.6", 
e110: 22 6e 65 74 34 36 22 29 3b 0d 0a 0d 0a 20 20 20  "net46");....   
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
e130: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62  argetFrameworkAb
e140: 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28  breviations.Add(
e150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e160: 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61          ".NETFra
e170: 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
e180: 34 2e 36 2e 31 22 2c 20 22 6e 65 74 34 36 31 22  4.6.1", "net461"
e190: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e1a0: 20 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72          targetFr
e1b0: 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74  ameworkAbbreviat
e1c0: 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20  ions.Add(..     
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1e0: 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c   ".NETFramework,
e1f0: 56 65 72 73 69 6f 6e 3d 76 34 2e 36 2e 32 22 2c  Version=v4.6.2",
e200: 20 22 6e 65 74 34 36 32 22 29 3b 0d 0a 0d 0a 20   "net462");.... 
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e220: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
e230: 41 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64  Abbreviations.Ad
e240: 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
e250: 20 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46            ".NETF
e260: 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e  ramework,Version
e270: 3d 76 34 2e 37 22 2c 20 22 6e 65 74 34 37 22 29  =v4.7", "net47")
e280: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e290: 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61         targetFra
e2a0: 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69  meworkAbbreviati
e2b0: 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20  ons.Add(..      
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2d0: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
e2e0: 65 72 73 69 6f 6e 3d 76 34 2e 37 2e 31 22 2c 20  ersion=v4.7.1", 
e2f0: 22 6e 65 74 34 37 31 22 29 3b 0d 0a 0d 0a 20 20  "net471");....  
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e310: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  targetFrameworkA
e320: 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64  bbreviations.Add
e330: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e340: 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72           ".NETFr
e350: 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
e360: 76 34 2e 37 2e 32 22 2c 20 22 6e 65 74 34 37 32  v4.7.2", "net472
e370: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
e380: 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 46           targetF
e390: 72 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61  rameworkAbbrevia
e3a0: 74 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20  tions.Add(..    
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3c0: 20 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b    ".NETFramework
e3d0: 2c 56 65 72 73 69 6f 6e 3d 76 34 2e 38 22 2c 20  ,Version=v4.8", 
e3e0: 22 6e 65 74 34 38 22 29 3b 0d 0a 0d 0a 20 20 20  "net48");....   
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
e400: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62  argetFrameworkAb
e410: 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28  breviations.Add(
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 20 20 20 20 20 20 22 2e 4e 45 54 53 74 61          ".NETSta
e440: 6e 64 61 72 64 2c 56 65 72 73 69 6f 6e 3d 76 32  ndard,Version=v2
e450: 2e 30 22 2c 20 22 6e 65 74 73 74 61 6e 64 61 72  .0", "netstandar
e460: 64 32 2e 30 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  d2.0");....     
e470: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72               tar
e480: 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72  getFrameworkAbbr
e490: 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28 0d 0a  eviations.Add(..
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4b0: 20 20 20 20 20 20 22 2e 4e 45 54 53 74 61 6e 64        ".NETStand
e4c0: 61 72 64 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 31  ard,Version=v2.1
e4d0: 22 2c 20 22 6e 65 74 73 74 61 6e 64 61 72 64 32  ", "netstandard2
e4e0: 2e 31 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  .1");..         
e4f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e500: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
e510: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
e520: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
e530: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
e540: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e550: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e570: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
e580: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
e590: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
e5a0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
e5b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
e5c0: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
e5d0: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
e5e0: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
e5f0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
e600: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
e610: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
e620: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
e630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e640: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
e650: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
e660: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
e670: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
e680: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
e690: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
e6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6b0: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
e6c0: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
e6d0: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e6f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e700: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
e710: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
e720: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
e730: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e750: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
e760: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
e770: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
e780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e790: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e7a0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
e7b0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
e7c0: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
e7d0: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7f0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
e800: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
e810: 41 64 64 28 22 78 38 36 5f 36 34 22 2c 20 22 78  Add("x86_64", "x
e820: 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64");..         
e830: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
e840: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
e850: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44  atforms.Add("AMD
e860: 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20  64", "x64");..  
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e880: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
e890: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
e8a0: 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e  dd("IA64", "Itan
e8b0: 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ium");..        
e8c0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
e8d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
e8e0: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52  latforms.Add("AR
e8f0: 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20  M", "WinCE");.. 
e900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e910: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
e920: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
e930: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
e940: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e950: 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f  EWORK..#if PRELO
e960: 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52  AD_NATIVE_LIBRAR
e970: 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  Y..             
e980: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e990: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68     // BUGBUG: Wh
e9a0: 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61  at about other a
e9b0: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
e9c0: 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns?..           
e9d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
e9e0: 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65       if (_SQLite
e9f0: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
ea00: 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
ea10: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
ea20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ea30: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
ea40: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  seDirectory = nu
ea50: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
ea60: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
ea70: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
ea80: 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ure = null;..   
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
eaa0: 6f 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72  ool allowBaseDir
eab0: 65 63 74 6f 72 79 4f 6e 6c 79 20 3d 20 66 61 6c  ectoryOnly = fal
eac0: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
ead0: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
eae0: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
eaf0: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
eb00: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb20: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
eb30: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
eb40: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
eb50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
eb60: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 61 6c            ref al
eb70: 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79  lowBaseDirectory
eb80: 4f 6e 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Only);....      
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebb0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
ebc0: 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74  pt to pre-load t
ebd0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
ebe0: 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20 20 20  ibrary (or..    
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ec00: 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20 61         interop a
ec10: 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f  ssembly) and sto
ec20: 72 65 20 62 6f 74 68 20 74 68 65 20 66 69 6c 65  re both the file
ec30: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
ec40: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ec50: 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64    and native mod
ec60: 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c  ule handle for l
ec70: 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20 20 20  ater usage...   
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ec90: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
eca0: 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20       /* IGNORED 
ecb0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
ecc0: 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53 51 4c        PreLoadSQL
ecd0: 69 74 65 44 6c 6c 28 62 61 73 65 44 69 72 65 63  iteDll(baseDirec
ece0: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
ed00: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
ed10: 72 65 2c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72  re, allowBaseDir
ed20: 65 63 74 6f 72 79 4f 6e 6c 79 2c 0d 0a 20 20 20  ectoryOnly,..   
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61     ref _SQLiteNa
ed50: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
ed60: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
ed70: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f             ref _
ed80: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
ed90: 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  leHandle);..    
eda0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
edb0: 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dif..#endif..   
edc0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
edd0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
ee30: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ee40: 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77   /// Combines tw
ee50: 6f 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d  o path strings..
ee60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
ee70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ee80: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61   <param name="pa
ee90: 74 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  th1">..      ///
eea0: 20 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20   The first path 
eeb0: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
eec0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
eed0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
eee0: 20 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a   name="path2">..
eef0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65        /// The se
ef00: 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e  cond path -OR- n
ef10: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
ef20: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ef30: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
ef40: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
ef50: 62 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e  bined path strin
ef60: 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62  g -OR- null if b
ef70: 6f 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69  oth of the origi
ef80: 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20  nal path..      
ef90: 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20  /// strings are 
efa0: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
efb0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
efc0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
efd0: 63 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f  c string MaybeCo
efe0: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
eff0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74        string pat
f000: 68 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  h1,..          s
f010: 74 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20  tring path2..   
f020: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
f030: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
f040: 28 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d  (path1 != null).
f050: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
f060: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f070: 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path2 != null)..
f080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f090: 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f    return Path.Co
f0a0: 6d 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74  mbine(path1, pat
f0b0: 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h2);..          
f0c0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f0e0: 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20  rn path1;..     
f0f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f100: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
f110: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f120: 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20     if (path2 != 
f130: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
f140: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f150: 70 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20  path2;..        
f160: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
f170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f180: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
f190: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
f1a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1f0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
f200: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f210: 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63  /// Resets the c
f220: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
f230: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
f240: 65 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  e value, thus fo
f250: 72 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  rcing the..     
f260: 20 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74   /// next call t
f270: 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
f280: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
f290: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
f2a0: 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
f2b0: 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
f2c0: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
f2d0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
f2e0: 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
f2f0: 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
f300: 2f 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  / XML configurat
f310: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
f320: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f330: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
f340: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
f350: 52 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  ResetCachedXmlCo
f360: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
f370: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f380: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
f390: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
f3a0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
f3b0: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
f3c0: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
f3d0: 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63  "Method_ResetCac
f3e0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
f3f0: 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  Name");..#endif.
f400: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
f410: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
f420: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
f430: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
f440: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f450: 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f       cachedXmlCo
f460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  nfigFileName = n
f470: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
f480: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
f490: 69 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b  ileName = false;
f4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
f4b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
f510: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f520: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
f530: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
f540: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
f550: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
f560: 6e 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20  name for the..  
f570: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
f580: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
f590: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
f5a0: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
f5b0: 6e 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20  nents, if..     
f5c0: 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20   /// available. 
f5d0: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58   If the cached X
f5e0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
f5f0: 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65   file name value
f600: 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
f610: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68  // available, th
f620: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
f630: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
f640: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  e" /> method wil
f650: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  l..      /// be 
f660: 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74  used to obtain t
f670: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f680: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d  tion file name..
f690: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
f6a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
f6b0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
f6c0: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
f6d0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
f6e0: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
f6f0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
f700: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
f710: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
f720: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
f730: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
f740: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
f750: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43  atic string GetC
f760: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
f770: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
f780: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
f790: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
f7a0: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
f7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
f7c0: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
f7d0: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
f7e0: 64 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  d_GetCachedXmlCo
f7f0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d  nfigFileName");.
f800: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f810: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
f820: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
f830: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
f840: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
f850: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f860: 28 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  (cachedXmlConfig
f870: 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  FileName != null
f880: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f890: 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68       return cach
f8a0: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f8b0: 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
f8c0: 20 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43        if (noXmlC
f8d0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a  onfigFileName)..
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8f0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
f900: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
f910: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f920: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
f930: 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d  Name();..      }
f940: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
f950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f990: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
f9a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f9b0: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
f9c0: 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20  returns the XML 
f9d0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
f9e0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
f9f0: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
fa00: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
fa10: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
fa20: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
fa30: 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20  mponents...     
fa40: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
fa50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
fa60: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
fa70: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
fa80: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
fa90: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
faa0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
fab0: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
fac0: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
fad0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
fae0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
faf0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
fb00: 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66  tring GetXmlConf
fb10: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
fb20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fb30: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
fb40: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
fb50: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
fb60: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
fb70: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
fb80: 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66  ethod_GetXmlConf
fb90: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
fba0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
fbb0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
fbc0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
fbd0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
fbe0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
fbf0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  eName;....#if !P
fc00: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
fc10: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
fc20: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
fc30: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
fc40: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
fc50: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
fc60: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79    fileName = May
fc70: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
fc80: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
fc90: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
fca0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
fcb0: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
fcc0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
fcd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fce0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
fcf0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
fd00: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
fd10: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
fd20: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
fd30: 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  me = fileName;..
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
fd50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
fd60: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
fd70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
fd80: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
fd90: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
fda0: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
fdb0: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20  yDirectory();.. 
fdc0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
fdd0: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
fde0: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
fdf0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
fe00: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
fe10: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
fe20: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
fe30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
fe40: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
fe50: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
fe60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fe70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe80: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
fe90: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  gFileName = file
fea0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
feb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
fec0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
fed0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
fee0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
fef0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
ff00: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
ff10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ff20: 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67       noXmlConfig
ff30: 46 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b  FileName = true;
ff40: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
ff50: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
ff60: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
ff70: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
ff80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
ffd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ffe0: 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61    /// If necessa
fff0: 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c  ry, replaces all
10000 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63   supported XML c
10010 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
10020 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20  e tokens..      
10030 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61  /// with their a
10040 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73  ssociated values
10050 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
10060 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10070 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
10080 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
10090 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
100a0 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
100b0 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69  uration file bei
100c0 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  ng read...      
100d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
100e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
100f0 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
10100 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e      /// A settin
10110 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f  g value read fro
10120 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  m the XML config
10130 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
10140 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
10150 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
10160 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
10170 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
10180 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  he <paramref nam
10190 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c  e="value" /> wil
101a0 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20  l all supported 
101b0 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
101c0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
101d0 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
101e0 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
101f0 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
10200 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
10210 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
10220 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
10230 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
10240 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
10250 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
10260 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
10270 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69  placeXmlConfigFi
10280 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20  leTokens(..     
10290 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
102a0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
102b0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
102c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
102d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
102e0 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
102f0 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
10300 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
10310 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10320 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
10330 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
10340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10350 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10360 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
10370 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10390 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
103a0 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
103b0 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66  tDirectoryName(f
103c0 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103e0 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
103f0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
10400 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
10410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10430 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
10440 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
10450 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65     XmlConfigDire
10480 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65  ctoryToken, dire
10490 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  ctory);..       
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
104b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
104c0 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
104d0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
104e0 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
10500 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
10510 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
10520 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
10530 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
10540 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
10550 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
10560 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
10570 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
10580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10590 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
105c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
105d0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
105e0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
105f0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10610 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
10620 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
10630 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
10640 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
10650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10660 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
10670 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
10680 65 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a  eplace XML " +..
10690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63                "c
106b0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
106c0 65 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73  e \"{0}\" tokens
106d0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
10700 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
10710 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
10720 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
10750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
10780 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
10790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107a0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
107c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
107d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
107e0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
107f0 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
10800 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
10810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10850 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
10860 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10870 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
10880 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
10890 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
108a0 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
108b0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
108c0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58   /// specified X
108d0 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
108e0 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   file...      //
108f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10900 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10910 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
10920 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
10930 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
10940 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
10950 65 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20  e to read...    
10960 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10970 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10980 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
10990 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
109a0 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
109b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
109c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
109d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
109e0 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
109f0 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
10a00 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
10a10 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
10a20 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
10a30 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
10a40 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
10a50 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
10a60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10a70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10a80 20 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d   name="expand">.
10a90 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
10aa0 65 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e  ero to expand an
10ab0 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  y environment va
10ac0 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65  riable reference
10ad0 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a  s contained in..
10ae0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65        /// the se
10af0 74 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62  tting value to b
10b00 65 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69  e returned.  Thi
10b10 73 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  s has no effect 
10b20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
10b30 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46     /// Compact F
10b40 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20  ramework...     
10b50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10b60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
10b70 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
10b80 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
10b90 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20  etting -OR- the 
10ba0 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70  default value sp
10bb0 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20  ecified by..    
10bc0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
10bd0 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
10be0 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20  > if it has not 
10bf0 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
10c00 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  tly or..      //
10c10 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
10c20 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
10c30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10c40 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
10c50 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65  tic string GetSe
10c60 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c  ttingValueViaXml
10c70 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20  ConfigFile(..   
10c80 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
10c90 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f  leName, /* in */
10ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
10cb0 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20  ng name,     /* 
10cc0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
10cd0 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
10ce0 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
10cf0 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e        bool expan
10d00 64 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  d      /* in */.
10d10 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
10d20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10d30 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
10d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10d50 20 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d   if ((fileName =
10d60 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65  = null) || (name
10d70 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10d90 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
10da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10db0 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75  XmlDocument docu
10dc0 6d 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f  ment = new XmlDo
10dd0 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20  cument();....   
10de0 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
10df0 65 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d  ent.Load(fileNam
10e00 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
10e10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10e20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d   XmlElement elem
10e30 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53  ent = document.S
10e40 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
10e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10e60 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
10e70 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
10e80 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
10e90 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
10ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10eb0 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
10ec0 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
10ed0 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
10ee0 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
10ef0 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
10f00 65 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20  ement; /* throw 
10f10 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
10f20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20      if (element 
10f30 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
10f40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10f50 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
10f60 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ing value = null
10f70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10f80 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65         if (eleme
10f90 6e 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28  nt.HasAttribute(
10fa0 22 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20  "value"))..     
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fc0 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74   value = element
10fd0 2e 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76  .GetAttribute("v
10fe0 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11000 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
11010 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
11020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11030 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
11040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11050 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
11060 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
11070 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
11080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11090 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
110a0 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
110b0 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
110c0 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
110d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110e0 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
110f0 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
11100 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
11110 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11130 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
11140 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  aceXmlConfigFile
11150 54 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c  Tokens(fileName,
11160 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
11170 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
11180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11190 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
111a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
111c0 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
111d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
111e0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
111f0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
11200 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
11210 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
11220 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
11230 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
11240 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
11250 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
11260 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
11270 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
11280 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
11290 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
112a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
112b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112c0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
112d0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
112e0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
112f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11300 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
11310 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
11320 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
11330 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
11340 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
11350 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
11360 6f 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22  o get setting \"
11370 7b 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d  {0}\" value " +.
11380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11390 20 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c         "from XML
113a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
113b0 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d  ile \"{1}\": {2}
113c0 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ", name,..      
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113e0 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f  fileName, e)); /
113f0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
11400 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11410 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
11420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11430 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11440 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
11450 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
11460 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
11470 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11480 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
11490 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  efault;..      }
114a0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
114b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114f0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
11500 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11510 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
11520 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11530 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
11540 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
11550 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
11560 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
11570 20 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20   that is..      
11580 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
11590 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
115a0 64 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  d managed assemb
115b0 6c 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c  ly, if applicabl
115c0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
115d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
115e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
115f0 22 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20  "assembly">..   
11600 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
11610 65 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72  ed assembly to r
11620 65 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66  ead the target f
11630 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
11640 74 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  te value..      
11650 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20  /// from...     
11660 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11670 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
11680 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
11690 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74  e value of the t
116a0 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
116b0 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
116c0 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
116d0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e  d..      /// man
116e0 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f  aged assembly -O
116f0 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
11700 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
11710 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20  ed.  If this..  
11720 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
11730 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69   was compiled wi
11740 74 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  th a version of 
11750 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
11760 72 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  rk prior to..   
11770 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34     /// version 4
11780 2e 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65  .0, the value re
11790 74 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65  turned MAY refle
117a0 63 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20  ct that version 
117b0 6f 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  of the .NET..   
117c0 20 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b     /// Framework
117d0 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
117e0 6f 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  one associated w
117f0 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
11800 64 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20  d managed..     
11810 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a   /// assembly...
11820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
11830 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
11840 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
11850 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72  g GetAssemblyTar
11860 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
11870 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
11880 79 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  y assembly..    
11890 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
118a0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
118b0 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
118c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
118d0 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45  #if NET_40 || NE
118e0 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20  T_45 || NET_451 
118f0 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45  || NET_452 || NE
11900 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20  T_46 || NET_461 
11910 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45  || NET_462 || NE
11920 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37 31 20  T_47 || NET_471 
11930 7c 7c 20 4e 45 54 5f 34 37 32 20 7c 7c 20 4e 45  || NET_472 || NE
11940 54 5f 53 54 41 4e 44 41 52 44 5f 32 30 20 7c 7c  T_STANDARD_20 ||
11950 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f 32 31   NET_STANDARD_21
11960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11970 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
11980 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11990 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
119a0 6d 62 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 0d  mbly.IsDefined(.
119b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
119c0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
119d0 66 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  f(TargetFramewor
119e0 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c  kAttribute), fal
119f0 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
11a00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a20 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   TargetFramework
11a30 41 74 74 72 69 62 75 74 65 20 74 61 72 67 65 74  Attribute target
11a40 46 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20  Framework =..   
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 20 20 20 20 20 20 20 28 54 61 72 67 65 74 46 72         (TargetFr
11a70 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65  ameworkAttribute
11a80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73               ass
11aa0 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41  embly.GetCustomA
11ab0 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20  ttributes(..    
11ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ad0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
11ae0 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
11af0 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73  Attribute), fals
11b00 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  e)[0];....      
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b20 72 65 74 75 72 6e 20 74 61 72 67 65 74 46 72 61  return targetFra
11b30 6d 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b  mework.Framework
11b40 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
11b50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11b60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11b70 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
11b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11ba0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
11bb0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
11bc0 20 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f     }..#elif NET_
11bd0 33 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  35..            
11be0 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72    return ".NETFr
11bf0 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
11c00 76 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45  v3.5";..#elif NE
11c10 54 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20  T_20..          
11c20 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54      return ".NET
11c30 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
11c40 6e 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66  n=v2.0";..#endif
11c50 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
11c60 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
11c70 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
11c80 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
11c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cd0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
11ce0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11cf0 20 20 2f 2f 2f 20 41 63 63 65 70 74 73 20 61 20    /// Accepts a 
11d00 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d  long target fram
11d10 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
11d20 76 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65 73 20  value and makes 
11d30 69 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20  it into a..     
11d40 20 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72 74 65   /// much shorte
11d50 72 20 76 65 72 73 69 6f 6e 2c 20 73 75 69 74 61  r version, suita
11d60 62 6c 65 20 66 6f 72 20 75 73 65 20 77 69 74 68  ble for use with
11d70 20 4e 75 47 65 74 20 70 61 63 6b 61 67 65 73 2e   NuGet packages.
11d80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11d90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11da0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
11db0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 22 3e  argetFramework">
11dc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
11dd0 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d  long target fram
11de0 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
11df0 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
11e00 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
11e10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
11e20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
11e30 20 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20    /// The short 
11e40 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
11e50 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
11e60 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
11e70 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   cannot..      /
11e80 2f 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  // be determined
11e90 20 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a   or converted...
11ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
11eb0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
11ec0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
11ed0 67 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67  g AbbreviateTarg
11ee0 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
11ef0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
11f00 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 0d 0a  argetFramework..
11f10 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
11f20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11f30 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
11f40 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72 67 65 74  llOrEmpty(target
11f50 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20  Framework))..   
11f60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11f70 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 61          string a
11f80 62 62 72 65 76 69 61 74 69 6f 6e 3b 0d 0a 0d 0a  bbreviation;....
11f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
11fa0 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
11fb0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
11fc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11fd0 20 20 20 20 20 20 20 20 69 66 20 28 74 61 72 67          if (targ
11fe0 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65  etFrameworkAbbre
11ff0 76 69 61 74 69 6f 6e 73 20 21 3d 20 6e 75 6c 6c  viations != null
12000 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12030 20 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72   (targetFramewor
12040 6b 41 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 54  kAbbreviations.T
12050 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  ryGetValue(..   
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12070 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65             targe
12080 74 46 72 61 6d 65 77 6f 72 6b 2c 20 6f 75 74 20  tFramework, out 
12090 61 62 62 72 65 76 69 61 74 69 6f 6e 29 29 0d 0a  abbreviation))..
120a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
120c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120d0 20 20 20 72 65 74 75 72 6e 20 61 62 62 72 65 76     return abbrev
120e0 69 61 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  iation;..       
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12110 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12120 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12130 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12140 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43            // HAC
12150 4b 3a 20 2a 4c 45 47 41 43 59 2a 20 46 61 6c 6c  K: *LEGACY* Fall
12160 62 61 63 6b 20 74 6f 20 74 68 65 20 6f 6c 64 20  back to the old 
12170 6d 65 74 68 6f 64 20 6f 66 0d 0a 20 20 20 20 20  method of..     
12180 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
12190 20 20 61 62 62 72 65 76 69 61 74 69 6e 67 20 74    abbreviating t
121a0 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
121b0 6e 61 6d 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  names...        
121c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
121d0 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
121e0 78 20 3d 20 74 61 72 67 65 74 46 72 61 6d 65 77  x = targetFramew
121f0 6f 72 6b 2e 49 6e 64 65 78 4f 66 28 0d 0a 20 20  ork.IndexOf(..  
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
12220 65 72 73 69 6f 6e 3d 76 22 29 3b 0d 0a 0d 0a 20  ersion=v");.... 
12230 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12240 28 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a 20  (index != -1).. 
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12270 20 20 61 62 62 72 65 76 69 61 74 69 6f 6e 20 3d    abbreviation =
12280 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
12290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
122a0 20 20 20 20 20 20 20 61 62 62 72 65 76 69 61 74         abbreviat
122b0 69 6f 6e 20 3d 20 61 62 62 72 65 76 69 61 74 69  ion = abbreviati
122c0 6f 6e 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  on.Replace(..   
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 20 20 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72     ".NETFramewor
122f0 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c 20 22 6e  k,Version=v", "n
12300 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  et");....       
12310 20 20 20 20 20 20 20 20 20 20 20 61 62 62 72 65             abbre
12320 76 69 61 74 69 6f 6e 20 3d 20 61 62 62 72 65 76  viation = abbrev
12330 69 61 74 69 6f 6e 2e 52 65 70 6c 61 63 65 28 0d  iation.Replace(.
12340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12350 20 20 20 20 20 20 20 22 2e 22 2c 20 53 74 72 69         ".", Stri
12360 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d 0a 20 20  ng.Empty);....  
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12380 69 6e 64 65 78 20 3d 20 61 62 62 72 65 76 69 61  index = abbrevia
12390 74 69 6f 6e 2e 49 6e 64 65 78 4f 66 28 27 2c 27  tion.IndexOf(','
123a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
123b0 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
123c0 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123e0 72 65 74 75 72 6e 20 61 62 62 72 65 76 69 61 74  return abbreviat
123f0 69 6f 6e 2e 53 75 62 73 74 72 69 6e 67 28 30 2c  ion.Substring(0,
12400 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20   index);..      
12410 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
12420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12430 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61          return a
12440 62 62 72 65 76 69 61 74 69 6f 6e 3b 0d 0a 20 20  bbreviation;..  
12450 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12460 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12470 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
12480 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 3b 0d  argetFramework;.
12490 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
124a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
124b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
124f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12500 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66  y>..      /// If
12510 20 6e 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c   necessary, repl
12520 61 63 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74  aces all support
12530 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  ed environment v
12540 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a  ariable tokens..
12550 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
12560 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20  heir associated 
12570 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
12580 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12590 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
125a0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
125b0 20 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69       /// A setti
125c0 6e 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72  ng value read fr
125d0 6f 6d 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e  om an environmen
125e0 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20 20 20  t variable...   
125f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12600 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
12610 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
12620 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
12630 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
12640 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20  "value" /> will 
12650 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 0d 0a 20  all supported.. 
12660 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e       /// environ
12670 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
12680 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20  kens replaced.  
12690 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  No return value 
126a0 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20  is reserved..   
126b0 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61     /// to indica
126c0 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68  te an error.  Th
126d0 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74  is method cannot
126e0 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   fail...      //
126f0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
12700 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
12710 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63  ic string Replac
12720 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
12730 61 62 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20  ableTokens(..   
12740 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
12750 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
12760 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
12770 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
12780 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
12790 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
127a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
127b0 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
127c0 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65 64 41  ory = GetCachedA
127d0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
127e0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
127f0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
12800 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
12810 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20  irectory))..    
12820 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
12840 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
12850 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
12870 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70  alue = value.Rep
12880 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lace(..         
12890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128a0 20 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f   AssemblyDirecto
128b0 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f  ryToken, directo
128c0 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
128d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
128e0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
128f0 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
12900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12910 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
12920 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
12930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12940 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
12950 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12970 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
12980 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
12990 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
129a0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
129b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
129f0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
12a00 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
12a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
12a30 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
12a40 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76  tCulture, "Nativ
12a50 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20  e library " +.. 
12a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
12a80 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
12a90 74 6f 20 72 65 70 6c 61 63 65 20 61 73 73 65 6d  to replace assem
12aa0 62 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  bly " +..       
12ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ac0 20 20 20 20 20 20 20 22 64 69 72 65 63 74 6f 72         "director
12ad0 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65  y token: {0}", e
12ae0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
12af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
12b30 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
12b60 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b80 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
12b90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12bb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12bc0 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
12bd0 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ly = null;....  
12be0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c10 20 20 20 20 61 73 73 65 6d 62 6c 79 20 3d 20 41      assembly = A
12c20 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
12c30 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
12c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
12c50 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
12c60 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
12c70 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
12c80 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
12c90 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
12ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
12cb0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
12cc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
12cd0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
12ce0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
12cf0 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
12d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d10 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
12d20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d40 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12d50 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
12d60 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
12d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d80 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
12d90 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
12da0 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
12db0 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12dd0 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
12de0 66 61 69 6c 65 64 20 74 6f 20 6f 62 74 61 69 6e  failed to obtain
12df0 20 65 78 65 63 75 74 69 6e 67 20 22 20 2b 0d 0a   executing " +..
12e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e10 20 20 20 20 20 20 20 20 20 20 22 61 73 73 65 6d            "assem
12e20 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
12e30 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e60 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e90 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
12ea0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
12eb0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
12ec0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
12ed0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12ee0 20 20 20 20 73 74 72 69 6e 67 20 74 61 72 67 65      string targe
12ef0 74 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41 62 62  tFramework = Abb
12f00 72 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61  reviateTargetFra
12f10 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
12f20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
12f30 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d  semblyTargetFram
12f40 65 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79 29 29  ework(assembly))
12f50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12f60 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
12f70 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72  sNullOrEmpty(tar
12f80 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a  getFramework))..
12f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12fb0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
12fc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fe0 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
12ff0 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
13000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13010 20 20 20 20 20 54 61 72 67 65 74 46 72 61 6d 65       TargetFrame
13020 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72 67 65  workToken, targe
13030 74 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20  tFramework);..  
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13050 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
13060 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
13070 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
13080 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
13090 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
130a0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
130b0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
130c0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
130d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
130e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
130f0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
13100 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
13110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13120 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13150 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13160 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
13170 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
13180 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
13190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131a0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
131b0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
131c0 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72  , "Native librar
131d0 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
131e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131f0 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72       "pre-loader
13200 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61   failed to repla
13210 63 65 20 74 61 72 67 65 74 20 22 20 2b 0d 0a 20  ce target " +.. 
13220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72               "fr
13240 61 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b  amework token: {
13250 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
13260 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13290 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
132a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132d0 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
132e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132f0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
13300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13310 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13320 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13330 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13340 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
13350 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
13360 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
133c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
133d0 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
133e0 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20  turns the value 
133f0 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
13400 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20   setting, using 
13410 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f  the XML..      /
13420 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  // configuration
13430 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65   file and/or the
13440 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
13450 69 61 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63  iables for the c
13460 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f  urrent..      //
13470 2f 20 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72  / process and/or
13480 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73   the current sys
13490 74 65 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61  tem, when availa
134a0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ble...      /// 
134b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
134c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
134d0 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
134e0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
134f0 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20   the setting... 
13500 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
13510 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
13520 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ram name="defaul
13530 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  t">..      /// T
13540 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  he value to be r
13550 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73  eturned if the s
13560 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62  etting has not b
13570 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
13580 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ly..      /// or
13590 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
135a0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
135b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
135c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
135d0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
135e0 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74  alue of the sett
135f0 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66  ing -OR- the def
13600 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69  ault value speci
13610 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  fied by..      /
13620 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
13630 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69  e="default" /> i
13640 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65  f it has not bee
13650 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
13660 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   or..      /// c
13670 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
13680 6e 65 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ned.  By default
13690 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73  , all references
136a0 20 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20   to existing..  
136b0 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d      /// environm
136c0 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 77 69  ent variables wi
136d0 6c 6c 20 62 65 20 65 78 70 61 6e 64 65 64 20 74  ll be expanded t
136e0 6f 20 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f  o their correspo
136f0 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20  nding values..  
13700 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74      /// within t
13710 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  he value to be r
13720 65 74 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65  eturned unless e
13730 69 74 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78  ither the "No_Ex
13740 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20  pand" or..      
13750 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c  /// "No_Expand_<
13760 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e  paramref name="n
13770 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e  ame" />" environ
13780 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
13790 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20   set [to..      
137a0 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a  /// anything]...
137b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
137c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
137d0 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
137e0 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ng GetSettingVal
137f0 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ue(..          s
13800 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f  tring name,    /
13810 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
13820 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75     string @defau
13830 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  lt /* in */..   
13840 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13850 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
13860 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13870 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
13880 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
13890 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
138a0 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74  al "No_SQLiteGet
138b0 53 65 74 74 69 6e 67 56 61 6c 75 65 22 20 65 6e  SettingValue" en
138c0 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
138d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61       //       va
138e0 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74  riable is set [t
138f0 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69  o anything], thi
13900 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c  s method will al
13910 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ways..          
13920 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  //       return 
13930 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
13940 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
13950 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
13960 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
13970 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
13980 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
13990 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 47       "No_SQLiteG
139a0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 29  etSettingValue")
139b0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
139c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
139d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
139e0 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  fault;..        
139f0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
13a00 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
13a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13a50 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
13a60 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  name == null).. 
13a70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13a80 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
13a90 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
13aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72  ....          #r
13af0 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
13b00 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
13b10 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
13b20 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
13b30 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74  TE: We are about
13b40 20 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69   to read a setti
13b50 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  ng value from th
13b60 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  e environment.. 
13b70 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13b80 20 20 6f 72 20 70 6f 73 73 69 62 6c 79 20 66 72    or possibly fr
13b90 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  om the XML confi
13ba0 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63  guration file; c
13bb0 72 65 61 74 65 20 6f 72 0d 0a 20 20 20 20 20 20  reate or..      
13bc0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 63      //       inc
13bd0 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f  rement the appro
13be0 70 72 69 61 74 65 20 73 74 61 74 69 73 74 69 63  priate statistic
13bf0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
13c00 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44   //..          D
13c10 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
13c20 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75  ntSettingReadCou
13c30 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65 29 3b  nt(name, false);
13c40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
13c50 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
13c60 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
13c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cb0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 62  /....          b
13cc0 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75  ool expand = tru
13cd0 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20 45 6e  e; /* SHARED: En
13ce0 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20  vironment -AND- 
13cf0 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e  XML config file.
13d00 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
13d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
13d60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13d70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13d80 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
13d90 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
13da0 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
13db0 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
13dc0 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f  mentVariable("No
13dd0 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c  _Expand") != nul
13de0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
13df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
13e00 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  xpand = false;..
13e10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13e20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
13e30 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
13e40 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
13e50 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
13e60 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
13e70 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
13e80 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  t(CultureInfo.In
13e90 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
13ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13eb0 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30     "No_Expand_{0
13ec0 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75  }", name)) != nu
13ed0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
13ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ef0 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d  expand = false;.
13f00 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13f10 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
13f20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65  = Environment.Ge
13f30 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
13f40 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20  able(name);.... 
13f50 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
13f60 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
13f70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
13f80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13f90 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
13fa0 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
13fb0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
13fc0 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
13fd0 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
13fe0 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
13ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
14000 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76  lue = ReplaceEnv
14010 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
14020 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a  Tokens(value);..
14030 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14040 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
14050 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
14060 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14070 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  n value;....    
14080 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14090 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
140a0 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d  the "No_SQLiteXm
140b0 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20 65 6e 76  lConfigFile" env
140c0 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
140d0 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20  e is..          
140e0 2f 2f 20 20 20 20 20 20 20 73 65 74 20 5b 74 6f  //       set [to
140f0 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73   anything], this
14100 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56   method will NEV
14110 45 52 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ER read from the
14120 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
14130 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75       XML configu
14140 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
14150 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
14160 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
14170 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
14180 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
14190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
141a0 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66  No_SQLiteXmlConf
141b0 69 67 46 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c  igFile") != null
141c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
141d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
141e0 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
141f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
14200 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
14210 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14250 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14260 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
14270 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
14280 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
14290 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
142a0 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
142b0 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
142c0 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
142d0 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  rom the XML..   
142e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
142f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
14300 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 20 69 6e  le; create or in
14310 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72  crement the appr
14320 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20  opriate..       
14330 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 61 74     //       stat
14340 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20  istic now...    
14350 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14360 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
14370 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65  crementSettingRe
14380 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 74 72  adCount(name, tr
14390 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
143a0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
143b0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
143c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14410 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 65 74     return GetSet
14420 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
14430 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
14440 20 20 20 20 20 20 20 20 20 20 47 65 74 43 61 63            GetCac
14450 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
14460 4e 61 6d 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64  Name(), name, @d
14470 65 66 61 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b  efault, expand);
14480 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
14490 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
144e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
144f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14500 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
14510 61 74 69 63 20 73 74 72 69 6e 67 20 4c 69 73 74  atic string List
14520 54 6f 53 74 72 69 6e 67 28 49 4c 69 73 74 3c 73  ToString(IList<s
14530 74 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20  tring> list)..  
14540 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14550 20 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c   if (list == nul
14560 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14570 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
14580 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72 69  ..          Stri
14590 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74  ngBuilder result
145a0 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69   = new StringBui
145b0 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lder();....     
145c0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74       foreach (st
145d0 72 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20  ring element in 
145e0 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20 20  list)..         
145f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14600 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d    if (element ==
14610 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14620 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
14630 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
14640 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e       if (result.
14650 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20  Length > 0)..   
14660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
14670 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 27 20 27  esult.Append(' '
14680 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14690 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e      result.Appen
146a0 64 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20  d(element);..   
146b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
146c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
146d0 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  ult.ToString();.
146e0 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
146f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14740 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
14750 74 69 63 20 69 6e 74 20 43 68 65 63 6b 46 6f 72  tic int CheckFor
14760 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64  ArchitecturesAnd
14770 50 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20  Platforms(..    
14780 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
14790 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
147a0 20 20 20 72 65 66 20 4c 69 73 74 3c 73 74 72 69     ref List<stri
147b0 6e 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20 20 20  ng> matches..   
147c0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
147d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74  {..          int
147e0 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a   result = 0;....
147f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61            if (ma
14800 74 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tches == null)..
14810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
14820 74 63 68 65 73 20 3d 20 6e 65 77 20 4c 69 73 74  tches = new List
14830 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20  <string>();.... 
14840 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
14850 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
14860 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14870 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
14880 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
14890 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 20  mpty(directory) 
148a0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
148b0 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 6f 72        (processor
148c0 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
148d0 66 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d  forms != null)).
148e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
148f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14900 20 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65 79      foreach (Key
14910 56 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e 67  ValuePair<string
14920 2c 20 73 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a  , string> pair..
14930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14940 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 70              in p
14950 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
14960 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a  turePlatforms)..
14970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14980 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14990 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44             if (D
149a0 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28  irectory.Exists(
149b0 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
149c0 28 64 69 72 65 63 74 6f 72 79 2c 20 70 61 69 72  (directory, pair
149d0 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20 20 20 20  .Key)))..       
149e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
149f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14a00 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63              matc
14a10 68 65 73 2e 41 64 64 28 70 61 69 72 2e 4b 65 79  hes.Add(pair.Key
14a20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14a40 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  sult++;..       
14a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14a60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14a70 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14a80 20 76 61 6c 75 65 20 3d 20 70 61 69 72 2e 56 61   value = pair.Va
14a90 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14ab0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
14ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
14ae0 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
14af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14b00 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69  f (Directory.Exi
14b10 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  sts(MaybeCombine
14b20 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
14b30 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20  value)))..      
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14b60 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
14b70 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b  ches.Add(value);
14b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14b90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
14ba0 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lt++;..         
14bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14be0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14bf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
14c00 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
14c10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14c70 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
14c80 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65  c bool CheckAsse
14c90 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20  mblyCodeBase(.. 
14ca0 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
14cb0 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20  y assembly,..   
14cc0 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
14cd0 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
14ce0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
14cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
14d00 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
14d10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14d20 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
14d30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14d40 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
14d50 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
14d60 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42      string codeB
14d70 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43  ase = assembly.C
14d80 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20  odeBase;....    
14d90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
14da0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
14db0 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20  ty(codeBase)).. 
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14dd0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
14de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14df0 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72  Uri uri = new Ur
14e00 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20  i(codeBase);..  
14e10 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
14e20 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65  ng localFileName
14e30 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68   = uri.LocalPath
14e40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14e50 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
14e60 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  sts(localFileNam
14e70 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
14e80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
14e90 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
14ea0 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
14eb0 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
14ec0 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d  tDirectoryName(.
14ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14ee0 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65     localFileName
14ef0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
14f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f10 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67  string xmlConfig
14f20 46 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65  FileName = Maybe
14f30 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20  CombinePath(..  
14f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f50 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f  directory, XmlCo
14f60 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a  nfigFileName);..
14f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f80 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
14f90 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  xmlConfigFileNam
14fa0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
14fb0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
14fc0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
14fd0 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
14fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ff0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
15000 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15020 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
15030 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
15040 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
15050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15060 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
15070 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
15080 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
15090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
150a0 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
150b0 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 58  e-loader found X
150c0 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
150d0 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
150e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150f0 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62       "via code b
15100 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c  ase for currentl
15110 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
15120 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d  mbly: \"{0}\"",.
15130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15140 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43 6f             xmlCo
15150 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20  nfigFileName)); 
15160 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
15170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
15180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15190 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
151b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151c0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
151d0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
151e0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
151f0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
15200 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
15210 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
15220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15230 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
15240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15250 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15260 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20     List<string> 
15270 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d  matches = null;.
15280 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15290 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72 63   if (CheckForArc
152a0 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
152b0 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72 79  tforms(directory
152c0 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29 20 3e  , ref matches) >
152d0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
152e0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
152f0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
15300 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
15310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15320 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
15330 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15350 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
15360 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
15370 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
15380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15390 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
153a0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
153b0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
153d0 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
153e0 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e  e-loader found n
153f0 61 74 69 76 65 20 73 75 62 2d 64 69 72 65 63 74  ative sub-direct
15400 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20 20  ories " +..     
15410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15420 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62       "via code b
15430 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c  ase for currentl
15440 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
15450 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d  mbly: \"{0}\"",.
15460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15470 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 54             ListT
15480 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73 29  oString(matches)
15490 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
154a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
154b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
154c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
154d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
154f0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
15500 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
15510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
15520 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
15530 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
15540 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e  ame = localFileN
15550 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
15560 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
15570 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
15580 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15590 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
155a0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
155b0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
155c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
155d0 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
155e0 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
155f0 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
15600 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
15610 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
15620 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
15630 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
15640 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
15650 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
15660 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
15670 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15680 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
15690 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
156a0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
156b0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
156c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
156d0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
156e0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
15710 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
15720 65 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64 65  ed to check code
15730 20 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20 20   base " +..     
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15750 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20   "for currently 
15760 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
15770 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
15780 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
15790 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
157a0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
157b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
157c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
157d0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
157e0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
157f0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
15800 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15810 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
15820 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lse;..      }..#
15830 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
15890 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
158a0 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20       /// Resets 
158b0 74 68 65 20 63 61 63 68 65 64 20 61 73 73 65 6d  the cached assem
158c0 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20 76 61  bly directory va
158d0 6c 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69 6e  lue, thus forcin
158e0 67 20 74 68 65 20 6e 65 78 74 0d 0a 20 20 20 20  g the next..    
158f0 20 20 2f 2f 2f 20 63 61 6c 6c 20 74 6f 20 3c 73    /// call to <s
15900 65 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68  ee cref="GetCach
15910 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
15920 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74  ory" /> method t
15930 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  o rely..      //
15940 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65 20  / upon the <see 
15950 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
15960 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
15970 65 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20 74  ethod to fetch t
15980 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  he..      /// as
15990 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79  sembly directory
159a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
159b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
159c0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
159d0 69 64 20 52 65 73 65 74 43 61 63 68 65 64 41 73  id ResetCachedAs
159e0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
159f0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
15a00 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
15a10 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
15a20 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
15a30 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
15a40 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
15a50 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65 73 65 74  nt("Method_Reset
15a60 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
15a70 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64  rectory");..#end
15a80 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
15a90 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
15aa0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
15ab0 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
15ac0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15ad0 20 20 20 20 20 20 20 20 63 61 63 68 65 64 41 73          cachedAs
15ae0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20  semblyDirectory 
15af0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
15b00 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
15b10 79 44 69 72 65 63 74 6f 72 79 20 3d 20 66 61 6c  yDirectory = fal
15b20 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
15b30 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
15b40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15b90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15ba0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
15bb0 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
15bc0 20 74 68 65 20 63 61 63 68 65 64 20 64 69 72 65   the cached dire
15bd0 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
15be0 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
15bf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 69 6e  ..      /// bein
15c00 67 20 65 78 65 63 75 74 65 64 2c 20 69 66 20 61  g executed, if a
15c10 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74 68  vailable.  If th
15c20 65 20 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c  e cached assembl
15c30 79 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75  y directory valu
15c40 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  e..      /// is 
15c50 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2c 20 74  not available, t
15c60 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
15c70 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
15c80 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
15c90 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
15ca0 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
15cb0 74 68 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72  the assembly dir
15cc0 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
15cd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15ce0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
15cf0 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
15d00 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
15d10 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
15d20 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65  rently being exe
15d30 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  cuted -OR- null 
15d40 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74  if..      /// it
15d50 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
15d60 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
15d70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
15d80 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
15d90 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63  ic string GetCac
15da0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
15db0 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
15dc0 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
15dd0 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
15de0 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
15df0 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
15e00 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
15e10 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
15e20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
15e30 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23  yDirectory");..#
15e40 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
15e50 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
15e60 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
15e70 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
15e80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15e90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
15ea0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
15eb0 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
15ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ed0 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64     return cached
15ee0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
15ef0 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
15f00 20 20 20 20 69 66 20 28 6e 6f 41 73 73 65 6d 62      if (noAssemb
15f10 6c 79 44 69 72 65 63 74 6f 72 79 29 0d 0a 20 20  lyDirectory)..  
15f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f30 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
15f40 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15f50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
15f60 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
15f70 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ry();..      }..
15f80 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fd0 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
15fe0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15ff0 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
16000 74 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74  turns the direct
16010 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
16020 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
16030 65 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  eing..      /// 
16040 65 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20  executed...     
16050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16060 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
16070 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
16080 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  The directory fo
16090 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  r the assembly c
160a0 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65  urrently being e
160b0 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c  xecuted -OR- nul
160c0 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l if..      /// 
160d0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
160e0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
160f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
16100 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
16110 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41  atic string GetA
16120 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
16130 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
16140 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
16150 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
16160 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
16170 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
16180 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
16190 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 41  unt("Method_GetA
161a0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
161b0 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
161c0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
161d0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  n....          t
161e0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
161f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41  .              A
16200 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
16210 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
16220 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
16230 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
16240 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
16250 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
16260 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
16280 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
16290 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
162a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
162b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
162c0 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63   noAssemblyDirec
162d0 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20  tory = true;..  
162e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
162f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
16300 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
16310 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
16320 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
16330 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
16340 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  eName = null;...
16350 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
16360 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
16380 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d  semblyName assem
16390 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  blyName = assemb
163a0 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d  ly.GetName();...
163b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
163c0 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20  f (assemblyName 
163d0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
163e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
163f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
16400 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
16410 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
16420 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
16440 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
16450 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
16460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
16470 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16480 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
16490 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
164a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
164b0 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61      fileName = a
164c0 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65  ssemblyName.Code
164d0 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  Base;..#else..  
164e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
164f0 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f  !CheckAssemblyCo
16500 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c 79 2c  deBase(assembly,
16510 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d   ref fileName)).
16520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16530 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73     fileName = as
16540 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b  sembly.Location;
16550 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
16560 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
16570 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
16580 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ty(fileName)).. 
16590 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
165a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165b0 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
165c0 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
165d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
165e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165f0 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69      noAssemblyDi
16600 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d  rectory = true;.
16610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16620 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
16630 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16640 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
16650 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16660 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
16670 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68  directory = Path
16680 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
16690 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  e(fileName);....
166a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
166b0 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
166c0 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79  rEmpty(directory
166d0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
166e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
166f0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
16700 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
16710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16720 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16730 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
16740 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
16750 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
16760 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
16770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
16780 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
16790 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
167a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
167b0 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
167c0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
167d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
167e0 20 20 20 20 20 20 20 20 63 61 63 68 65 64 41 73          cachedAs
167f0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20  semblyDirectory 
16800 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  = directory;..  
16810 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
16820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
16830 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
16840 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
16850 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
16860 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
16870 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
16880 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
16890 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
168a0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
168b0 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
168c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
168d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
168e0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
168f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
16900 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
16910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16920 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
16930 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
16940 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
16950 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
16960 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
16970 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
16980 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
169a0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
169b0 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
169c0 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72 79 20  o get directory 
169d0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
169e0 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20             "for 
169f0 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
16a00 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30  ing assembly: {0
16a10 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
16a20 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
16a30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16a40 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
16a50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16a70 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
16a80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
16a90 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
16aa0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16ab0 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
16ac0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
16ad0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16ae0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
16af0 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
16b00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
16b20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
16b30 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
16b40 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
16ba0 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61  gion Optional Na
16bb0 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72  tive SQLite Libr
16bc0 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20  ary Pre-Loading 
16bd0 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  Code..      //..
16be0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
16bf0 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67  f we are looking
16c00 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61 72   for the standar
16c10 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22 73  d SQLite DLL ("s
16c20 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20  qlite3.dll"),.. 
16c30 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
16c40 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22  e interop DLL ("
16c50 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
16c60 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65 20  ll"), or we are 
16c70 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a  running on the..
16c80 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e        //       .
16c90 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
16ca0 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64  ework, we should
16cb0 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63 6f   include this co
16cc0 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d  de (only if the.
16cd0 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
16ce0 66 65 61 74 75 72 65 20 68 61 73 20 61 63 74 75  feature has actu
16cf0 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c 65  ally been enable
16d00 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20 77  d).  This code w
16d10 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d  ould be totally.
16d20 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
16d30 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68 69  redundant if thi
16d40 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65 65  s module has bee
16d50 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74  n bundled into t
16d60 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20  he mixed-mode.. 
16d70 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73       //       as
16d80 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
16d90 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  /..#if SQLITE_ST
16da0 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
16db0 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
16dc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16dd0 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20  MEWORK....      
16de0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
16df0 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20  E: Only compile 
16e00 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  in the native li
16e10 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20 63  brary pre-load c
16e20 6f 64 65 20 69 66 20 74 68 65 20 66 65 61 74 75  ode if the featu
16e30 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  re..      //    
16e40 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61 62     has been enab
16e50 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62 75 69  led for this bui
16e60 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23  ld...      //..#
16e70 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
16e80 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
16e90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16ea0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
16eb0 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72 6f  me of the enviro
16ec0 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 63  nment variable c
16ed0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72  ontaining the pr
16ee0 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f  ocessor..      /
16ef0 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20  // architecture 
16f00 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
16f10 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
16f20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16f30 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
16f40 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
16f50 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41 52  ing PROCESSOR_AR
16f60 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20 20  CHITECTURE =..  
16f70 20 20 20 20 20 20 20 20 22 50 52 4f 43 45 53 53          "PROCESS
16f80 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 22  OR_ARCHITECTURE"
16f90 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
16fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fe0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
16ff0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
17000 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ta..      /// <s
17010 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17020 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
17030 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  dule file name f
17040 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
17050 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
17060 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
17070 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17090 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74  ic string _SQLit
170a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  eNativeModuleFil
170b0 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  eName = null;...
170c0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17110 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17120 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17130 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
17140 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68  le handle for th
17150 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
17160 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65 20 76  library or the v
17170 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  alue..      /// 
17180 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20  IntPtr.Zero...  
17190 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
171a0 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
171b0 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
171c0 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
171d0 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50  uleHandle = IntP
171e0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
171f0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
17200 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
17250 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17260 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
17270 74 65 72 6d 69 6e 65 73 20 74 68 65 20 62 61 73  termines the bas
17280 65 20 66 69 6c 65 20 6e 61 6d 65 20 28 77 69 74  e file name (wit
17290 68 6f 75 74 20 61 6e 79 20 64 69 72 65 63 74 6f  hout any directo
172a0 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d  ry information).
172b0 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74  .      /// for t
172c0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
172d0 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70   library to be p
172e0 72 65 2d 6c 6f 61 64 65 64 20 62 79 20 74 68 69  re-loaded by thi
172f0 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
17300 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17310 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
17320 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
17330 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
17340 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
17350 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
17360 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64  to be pre-loaded
17370 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   by..      /// t
17380 68 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e  his class -OR- n
17390 75 6c 6c 20 69 66 20 69 74 73 20 76 61 6c 75 65  ull if its value
173a0 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
173b0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
173c0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
173d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
173e0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 61  tic string GetNa
173f0 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
17400 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20  ameOnly()..     
17410 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74   {..          st
17420 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ring fileNameOnl
17430 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  y = GetSettingVa
17440 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
17450 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
17460 74 65 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  te_LibraryFileNa
17470 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d  meOnly", null);.
17480 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
17490 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d  (fileNameOnly !=
174a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
174b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
174c0 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20  eNameOnly;....  
174d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
174e0 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f  QLITE_DLL; /* CO
174f0 4d 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  MPAT */..      }
17500 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
17560 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17570 2f 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72  /// Searches for
17580 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
17590 74 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68  te library in th
175a0 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
175b0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  aining..      //
175c0 2f 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  / the assembly c
175d0 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65  urrently being e
175e0 78 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20  xecuted as well 
175f0 61 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65  as the base dire
17600 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ctory..      ///
17610 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
17620 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
17630 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ain...      /// 
17640 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17650 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17660 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79  e="baseDirectory
17670 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70  ">..      /// Up
17680 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
17690 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20   parameter will 
176a0 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72  be modified to r
176b0 65 66 65 72 20 74 6f 20 74 68 65 20 62 61 73 65  efer to the base
176c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65  ..      /// dire
176d0 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
176e0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
176f0 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
17700 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
17710 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
17720 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
17730 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
17740 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20  .      /// Upon 
17750 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17760 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20  rameter will be 
17770 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65  modified to refe
17780 72 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20  r to the name.. 
17790 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20       /// of the 
177a0 69 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63 74  immediate direct
177b0 6f 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66  ory (i.e. the of
177c0 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
177d0 73 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20  se directory).. 
177e0 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e       /// contain
177f0 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53  ing the native S
17800 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a  QLite library...
17810 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17820 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
17830 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77  aram name="allow
17840 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
17850 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  y">..      /// U
17860 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
17870 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
17880 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
17890 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 6c 79 20 69 66  non-zero only if
178a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
178b0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
178c0 74 73 65 6c 66 20 73 68 6f 75 6c 64 20 62 65 20  tself should be 
178d0 61 6c 6c 6f 77 65 64 20 66 6f 72 20 6c 6f 61 64  allowed for load
178e0 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  ing the native..
178f0 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
17900 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
17910 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
17920 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
17930 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
17940 28 73 75 63 63 65 73 73 29 20 69 66 20 74 68 65  (success) if the
17950 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
17960 69 62 72 61 72 79 20 77 61 73 20 66 6f 75 6e 64  ibrary was found
17970 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
17980 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28 66 61      /// zero (fa
17990 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20 20 2f  ilure)...      /
179a0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
179b0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
179c0 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63 68 46  tic bool SearchF
179d0 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20  orDirectory(..  
179e0 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
179f0 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
17a00 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  ,         /* out
17a10 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
17a20 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73  ef string proces
17a30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
17a40 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
17a50 20 20 20 20 20 20 72 65 66 20 62 6f 6f 6c 20 61        ref bool a
17a60 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
17a70 79 4f 6e 6c 79 20 20 20 2f 2a 20 6f 75 74 20 2a  yOnly   /* out *
17a80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
17a90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17aa0 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
17ab0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
17ac0 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
17ad0 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68  dSQLite_NoSearch
17ae0 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  ForDirectory", n
17af0 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
17b00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17b10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17b20 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42   false; /* DISAB
17b30 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LED */..        
17b40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
17b50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
17b60 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e  / NOTE: Determin
17b70 65 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20  e the base file 
17b80 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
17b90 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
17ba0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
17bb0 2f 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20  /       If this 
17bc0 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20  is not known by 
17bd0 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63  this class, we c
17be0 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d  annot continue..
17bf0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
17c00 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
17c10 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
17c20 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
17c30 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a  ileNameOnly();..
17c40 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
17c50 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20  fileNameOnly == 
17c60 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17c70 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
17c80 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
17c90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
17ca0 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
17cb0 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69   list of base di
17cc0 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72  rectories and pr
17cd0 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d  ocessor/platform
17ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
17cf0 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65       names.  The
17d00 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65  se lists will be
17d10 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f   used to help lo
17d20 63 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d  cate the native.
17d30 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
17d40 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20      SQLite core 
17d50 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65  library (or inte
17d60 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f  rop assembly) to
17d70 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a   pre-load into..
17d80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
17d90 20 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e     this process.
17da0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
17db0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
17dc0 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d  [] directories =
17dd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17de0 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72    GetAssemblyDir
17df0 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21  ectory(),..#if !
17e00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17e10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
17e20 20 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61           AppDoma
17e30 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
17e40 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  .BaseDirectory,.
17e50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
17e60 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
17e70 20 20 20 73 74 72 69 6e 67 20 65 78 74 72 61 53     string extraS
17e80 75 62 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  ubDirectory = nu
17e90 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
17ea0 20 69 66 20 28 28 47 65 74 53 65 74 74 69 6e 67   if ((GetSetting
17eb0 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
17ec0 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
17ed0 61 64 53 51 4c 69 74 65 5f 41 6c 6c 6f 77 42 61  adSQLite_AllowBa
17ee0 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 22  seDirectoryOnly"
17ef0 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29  , null) != null)
17f00 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
17f10 20 20 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64     (HelperMethod
17f20 73 2e 49 73 44 6f 74 4e 65 74 43 6f 72 65 28 29  s.IsDotNetCore()
17f30 20 26 26 20 21 48 65 6c 70 65 72 4d 65 74 68 6f   && !HelperMetho
17f40 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 29  ds.IsWindows()))
17f50 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
17f60 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74               ext
17f70 72 61 53 75 62 44 69 72 65 63 74 6f 72 79 20 3d  raSubDirectory =
17f80 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 20 2f   String.Empty; /
17f90 2a 20 2e 4e 45 54 20 43 6f 72 65 20 6f 6e 20 50  * .NET Core on P
17fa0 4f 53 49 58 20 2a 2f 0d 0a 20 20 20 20 20 20 20  OSIX */..       
17fb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17fc0 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69    string[] subDi
17fd0 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
17fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
17ff0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
18000 63 74 75 72 65 28 29 2c 20 2f 2a 20 65 2e 67 2e  cture(), /* e.g.
18010 20 22 78 38 36 22 20 2a 2f 0d 0a 20 20 20 20 20   "x86" */..     
18020 20 20 20 20 20 20 20 20 20 47 65 74 50 6c 61 74           GetPlat
18030 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 2c 20  formName(null), 
18040 20 20 20 20 20 2f 2a 20 65 2e 67 2e 20 22 57 69       /* e.g. "Wi
18050 6e 33 32 22 20 2a 2f 0d 0a 20 20 20 20 20 20 20  n32" */..       
18060 20 20 20 20 20 20 20 65 78 74 72 61 53 75 62 44         extraSubD
18070 69 72 65 63 74 6f 72 79 20 20 20 20 20 20 20 20  irectory        
18080 20 20 20 2f 2a 20 62 61 73 65 20 64 69 72 65 63     /* base direc
18090 74 6f 72 79 20 6f 6e 6c 79 3f 20 2a 2f 0d 0a 20  tory only? */.. 
180a0 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20           };.... 
180b0 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
180c0 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f   (string directo
180d0 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65  ry in directorie
180e0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  s)..          {.
180f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
18100 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20  f (directory == 
18110 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18120 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
18130 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
18140 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
18150 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72 79  ing subDirectory
18160 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69   in subDirectori
18170 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es)..           
18180 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18190 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 44          if (subD
181a0 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
181b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
181c0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
181d0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
181e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
181f0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
18200 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
18210 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20  CombinePath(..  
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18230 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65      MaybeCombine
18240 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
18250 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a  subDirectory),..
18260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18270 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e        fileNameOn
18280 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
18290 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
182a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182b0 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
182c0 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65   SQLite DLL file
182d0 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20   exists, return 
182e0 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
182f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
18300 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65       Prior to re
18310 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65  turning, set the
18320 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
18330 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
18340 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
18350 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
18360 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63  ecture to reflec
18370 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a  t the location..
18380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18390 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65    //       where
183a0 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a   it was found...
183b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183c0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
183d0 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
183e0 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
183f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
18400 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
18410 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
18420 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
18430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18440 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
18450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18460 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
18480 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
18490 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
184a0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
184b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184c0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
184d0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
184e0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
184f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18500 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
18510 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
18520 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66 69 6c  found native fil
18530 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
18540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18550 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30 7d       "name \"{0}
18560 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 69  \", returning di
18570 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22 20  rectory \"{1}\" 
18580 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  and " +..       
18590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185a0 20 20 20 20 20 20 20 22 73 75 62 2d 64 69 72 65         "sub-dire
185b0 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e  ctory \"{2}\"...
185c0 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69 72  ", fileName, dir
185d0 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
185e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185f0 20 20 20 20 20 20 20 73 75 62 44 69 72 65 63 74         subDirect
18600 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ory)); /* throw 
18610 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18620 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18640 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18660 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18670 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
18680 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
18690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
186b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186c0 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
186d0 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
186e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
186f0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
18700 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
18710 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  subDirectory;.. 
18720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18730 20 20 20 20 20 61 6c 6c 6f 77 42 61 73 65 44 69       allowBaseDi
18740 72 65 63 74 6f 72 79 4f 6e 6c 79 20 3d 20 28 73  rectoryOnly = (s
18750 75 62 44 69 72 65 63 74 6f 72 79 2e 4c 65 6e 67  ubDirectory.Leng
18760 74 68 20 3d 3d 20 30 29 3b 0d 0a 0d 0a 20 20 20  th == 0);....   
18770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18780 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20     return true; 
18790 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20  /* FOUND */..   
187a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
187b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
187c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
187d0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
187e0 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54  rn false; /* NOT
187f0 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20   FOUND */..     
18800 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
18860 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18870 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
18880 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61  d returns the ba
18890 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
188a0 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
188b0 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  ication..      /
188c0 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  // domain...    
188d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
188e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
188f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
18900 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
18910 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72  ory for the curr
18920 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
18930 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c  domain -OR- null
18940 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f   if it..      //
18950 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
18960 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
18970 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
18980 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
18990 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61  tic string GetBa
189a0 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  seDirectory().. 
189b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
189c0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
189d0 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
189e0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
189f0 61 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e  aseDirectory" en
18a00 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
18a10 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  le..          //
18a20 20 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75         is set, u
18a30 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66  se it verbatim f
18a40 6f 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65  or the base dire
18a50 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  ctory...        
18a60 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
18a70 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
18a80 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
18a90 75 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  ue("PreLoadSQLit
18aa0 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22  e_BaseDirectory"
18ab0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18ac0 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
18ad0 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
18ae0 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
18af0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18b00 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  n directory;....
18b10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18b20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18b30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18b40 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
18b50 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
18b60 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62  SQLite_UseAssemb
18b70 6c 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  lyDirectory" env
18b80 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  ironment..      
18b90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
18ba0 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
18bb0 20 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e   anything), then
18bc0 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20   attempt to use 
18bd0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
18be0 2f 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72  /       director
18bf0 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
18c00 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
18c10 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20  ting assembly.. 
18c20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
18c30 20 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44    (i.e. System.D
18c40 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73  ata.SQLite) ints
18c50 65 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69  ead of the appli
18c60 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  cation..        
18c70 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69    //       domai
18c80 6e 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  n base directory
18c90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
18ca0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
18cb0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
18cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18cd0 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
18ce0 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
18cf0 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21  ectory", null) !
18d00 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18d10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18d20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
18d30 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
18d40 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
18d50 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
18d60 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
18d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d80 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
18d90 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
18da0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
18db0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
18dc0 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
18dd0 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
18de0 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ng the base dire
18df0 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20  ctory of the..  
18e00 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
18e10 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
18e20 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20  tion domain...  
18e30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18e40 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70        return App
18e50 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
18e60 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
18e70 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ry;..#else..    
18e80 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18e90 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
18ea0 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b  erwise, fallback
18eb0 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69   on using the di
18ec0 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
18ed0 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ng..          //
18ee0 20 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65         the curre
18ef0 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
18f00 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
18f10 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18f20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65    return GetAsse
18f30 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
18f40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
18f50 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
18fb0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
18fc0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
18fd0 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c  if the dynamic l
18fe0 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
18ff0 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20 61   name requires a
19000 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f   suffix..      /
19010 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20 69  // and adds it i
19020 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
19030 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19040 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
19050 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
19060 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
19070 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79   The original dy
19080 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
19090 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20  ry file name to 
190a0 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20  inspect...      
190b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
190c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
190d0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
190e0 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
190f0 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c  brary file name,
19100 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69   possibly modifi
19110 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e  ed to include an
19120 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65  ..      /// exte
19130 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  nsion...      //
19140 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
19150 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
19160 69 63 20 73 74 72 69 6e 67 20 46 69 78 55 70 44  ic string FixUpD
19170 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20  llFileName(..   
19180 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
19190 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d  leName /* in */.
191a0 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
191b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
191c0 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
191d0 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
191e0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
191f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19200 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68    if (HelperMeth
19210 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29  ods.IsWindows())
19220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19230 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19240 20 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61       if (!fileNa
19250 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46  me.EndsWith(DllF
19260 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20  ileExtension,.. 
19270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19280 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
19290 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
192a0 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20  lIgnoreCase)).. 
192b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
192c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
192d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
192e0 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46   fileName + DllF
192f0 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20  ileExtension;.. 
19300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19310 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
19320 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
19330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
19340 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
19350 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19360 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
193b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
193c0 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
193d0 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
193e0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
193f0 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
19400 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
19410 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  /// process...  
19420 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19430 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
19440 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
19450 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72  // The processor
19460 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
19470 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
19480 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  cess -OR- null i
19490 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  f it..      /// 
194a0 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
194b0 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
194c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
194d0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
194e0 63 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63  c string GetProc
194f0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
19500 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
19510 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
19520 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
19530 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
19540 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72  Lite_ProcessorAr
19550 63 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69  chitecture" envi
19560 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
19570 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
19580 61 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65  able is set, use
19590 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72   it verbatim for
195a0 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
195b0 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cessor..        
195c0 20 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69    //       archi
195d0 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
195e0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
195f0 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
19600 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
19610 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
19620 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
19630 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
19640 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
19650 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  cture", null);..
19660 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
19670 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
19680 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  cture != null)..
19690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
196a0 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72  turn processorAr
196b0 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20  chitecture;.... 
196c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
196d0 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47         // BUGBUG
196e0 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61  : Will this alwa
196f0 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d  ys be reliable?.
19700 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
19710 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
19720 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
19730 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
19740 28 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49  (PROCESSOR_ARCHI
19750 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d  TECTURE, null);.
19760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
197c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
197d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
197e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
197f0 20 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72   HACK: Check for
19800 20 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22   an "impossible"
19810 20 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20   situation.  If 
19820 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65  the pointer size
19830 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
19840 20 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c       is 32-bits,
19850 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
19860 72 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e  rchitecture cann
19870 6f 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a  ot be "AMD64"...
19880 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
19890 20 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c     In that case,
198a0 20 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63   we are almost c
198b0 65 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67  ertainly hitting
198c0 20 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20   a bug in the.. 
198d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
198e0 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74    operating syst
198f0 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c  em and/or Visual
19900 20 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75   Studio that cau
19910 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ses the..       
19920 20 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43     //       PROC
19930 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
19940 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  RE environment v
19950 61 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61  ariable to conta
19960 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
19970 20 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67    //       wrong
19980 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63   value in some c
19990 69 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50  ircumstances.  P
199a0 6c 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74  lease refer to t
199b0 69 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20  icket..         
199c0 20 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38   //       [9ac98
199d0 36 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68  62611] for furth
199e0 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d  er information..
199f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
19a00 20 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e           if ((In
19a10 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a  tPtr.Size == siz
19a20 65 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20  eof(int)) &&..  
19a30 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
19a40 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73  ng.Equals(proces
19a50 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
19a60 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20   "AMD64",..     
19a70 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
19a80 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
19a90 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
19aa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
19ab0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
19ac0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
19ad0 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
19ae0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
19af0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
19b00 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73   When tracing is
19b10 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74   enabled, save t
19b20 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65  he originally de
19b30 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20  tected..        
19b40 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
19b50 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
19b60 63 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61  cture before cha
19b70 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20  nging it...     
19b80 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19b90 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
19ba0 67 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72  g savedProcessor
19bb0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70  Architecture = p
19bc0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
19bd0 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ture;..#endif...
19be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
19bf0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19c00 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f   // NOTE: We kno
19c10 77 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67  w that operating
19c20 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65   systems that re
19c30 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d  turn "AMD64" as.
19c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
19c50 2f 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63  /       the proc
19c60 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
19c70 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20  re are actually 
19c80 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20  a superset of.. 
19c90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19ca0 20 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20        the "x86" 
19cb0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19cc0 65 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72  ecture; therefor
19cd0 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20  e, return..     
19ce0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
19cf0 20 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65    "x86" when the
19d00 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73   pointer size is
19d10 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20   32-bits...     
19d20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19d30 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
19d40 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19d50 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66   = "x86";....#if
19d60 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
19d70 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
19d80 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
19d90 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
19da0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19db0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
19dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19dd0 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74   // NOTE: Show t
19de0 68 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69  hat we hit a fai
19df0 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75  rly unusual situ
19e00 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20  ation (i.e...   
19e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19e20 2f 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f  /       the "wro
19e30 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ng" processor ar
19e40 63 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64  chitecture was d
19e50 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20  etected)...     
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e80 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
19e90 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
19ea0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
19eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ec0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
19ed0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
19ee0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19ef0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
19f00 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
19f10 64 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d  der detected {0}
19f20 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b  -bit pointer " +
19f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19f40 20 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69          "size wi
19f50 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  th processor arc
19f60 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c  hitecture \"{1}\
19f70 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20  ", using " +..  
19f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f90 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61      "processor a
19fa0 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32  rchitecture \"{2
19fb0 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c  }\" instead...",
19fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19fd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53          IntPtr.S
19fe0 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20  ize * 8 /* bits 
19ff0 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73  */, savedProcess
1a000 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
1a010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a020 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1a030 41 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20  Architecture)); 
1a040 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1a050 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a060 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1a070 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1a080 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a090 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
1a0a0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
1a0b0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1a0c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1a0d0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
1a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a120 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1a130 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
1a140 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
1a150 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1a160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a170 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a180 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 66      // NOTE: Def
1a190 61 75 6c 74 20 74 6f 20 74 68 65 20 70 72 6f 63  ault to the proc
1a1a0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1a1b0 72 65 20 72 65 70 6f 72 74 65 64 20 62 79 20 74  re reported by t
1a1c0 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
1a1d0 20 20 2f 2f 20 20 20 20 20 20 20 61 70 70 72 6f    //       appro
1a1e0 70 72 69 61 74 65 20 6e 61 74 69 76 65 20 6f 70  priate native op
1a1f0 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 41  erating system A
1a200 50 49 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  PI, if any...   
1a210 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1a220 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
1a230 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a240 72 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61  re = NativeLibra
1a250 72 79 48 65 6c 70 65 72 2e 47 65 74 4d 61 63 68  ryHelper.GetMach
1a260 69 6e 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ine();....      
1a270 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a280 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1a290 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  E: Upon failure,
1a2a0 20 72 65 74 75 72 6e 20 65 6d 70 74 79 20 73 74   return empty st
1a2b0 72 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c 6c  ring.  This will
1a2c0 20 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20 20   prevent..      
1a2d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1a2e0 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74   the calling met
1a2f0 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65  hod from conside
1a300 72 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64  ring this method
1a310 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20   call..         
1a320 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 20       //       a 
1a330 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20  "failure"...    
1a340 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1a350 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a360 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a370 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
1a380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a390 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
1a3a0 74 65 63 74 75 72 65 20 3d 20 53 74 72 69 6e 67  tecture = String
1a3b0 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20  .Empty;..       
1a3c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1a3d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a420 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
1a430 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1a440 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
1a450 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a4a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1a4b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47  ry>..      /// G
1a4c0 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73  iven the process
1a4d0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
1a4e0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d   returns the nam
1a4f0 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72  e of the platfor
1a500 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  m...      /// </
1a510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1a520 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1a530 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
1a540 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
1a550 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
1a560 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74  r architecture t
1a570 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20  o be translated 
1a580 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61  to a platform na
1a590 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
1a5a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1a5b0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1a5c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74      /// The plat
1a5d0 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68  form name for th
1a5e0 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63  e specified proc
1a5f0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1a600 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20  re -OR- null..  
1a610 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61      /// if it ca
1a620 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
1a630 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
1a640 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1a650 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1a660 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f  string GetPlatfo
1a670 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  rmName(..       
1a680 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
1a690 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
1a6a0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1a6b0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
1a6c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
1a6d0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
1a6e0 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
1a6f0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
1a700 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1a710 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72  e = GetProcessor
1a720 41 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d  Architecture();.
1a730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
1a740 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1a750 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41  Empty(processorA
1a760 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20  rchitecture)).. 
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a780 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1a790 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1a7a0 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1a7b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a7c0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
1a7d0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a7e0 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
1a7f0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1a800 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1a810 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1a820 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
1a830 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tformName;....  
1a840 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a850 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a860 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54  cturePlatforms.T
1a870 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  ryGetValue(..   
1a880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a890 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
1a8a0 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c  itecture, out pl
1a8b0 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20  atformName))..  
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1a8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a8e0 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d   return platform
1a8f0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
1a900 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a910 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1a920 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
1a930 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1a990 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1a9a0 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
1a9b0 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ts to load the n
1a9c0 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
1a9d0 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68  rary based on th
1a9e0 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
1a9f0 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
1aa00 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61   and processor a
1aa10 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
1aa20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1aa30 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
1aa40 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44  aram name="baseD
1aa50 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20  irectory">..    
1aa60 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
1aa70 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c  irectory to use,
1aa80 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
1aa90 74 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65  t (the base dire
1aaa0 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20  ctory of..      
1aab0 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20  /// the current 
1aac0 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
1aad0 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63  in).  This direc
1aae0 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74  tory should cont
1aaf0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ain the..      /
1ab00 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
1ab10 68 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66  hitecture specif
1ab20 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ic sub-directori
1ab30 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
1ab40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1ab50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1ab60 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1ab70 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
1ab80 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
1ab90 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
1aba0 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f  tecture, null fo
1abb0 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a  r default (the..
1abc0 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
1abd0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1abe0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
1abf0 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20  process).  This 
1ac00 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20  caller should.. 
1ac10 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20       /// almost 
1ac20 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e  always specify n
1ac30 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72  ull for this par
1ac40 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f  ameter...      /
1ac50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ac60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ac70 6d 65 3d 22 61 6c 6c 6f 77 42 61 73 65 44 69 72  me="allowBaseDir
1ac80 65 63 74 6f 72 79 4f 6e 6c 79 22 3e 0d 0a 20 20  ectoryOnly">..  
1ac90 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1aca0 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
1acb0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1acc0 65 20 6c 69 62 72 61 72 79 20 63 61 6e 20 62 65  e library can be
1acd0 20 6c 6f 61 64 65 64 0d 0a 20 20 20 20 20 20 2f   loaded..      /
1ace0 2f 2f 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  // from the base
1acf0 20 64 69 72 65 63 74 6f 72 79 20 69 74 73 65 6c   directory itsel
1ad00 66 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  f...      /// </
1ad10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
1ad20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
1ad30 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
1ad40 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
1ad50 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e   The candidate n
1ad60 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c  ative module fil
1ad70 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77  e name to load w
1ad80 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65  ill be stored he
1ad90 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  re,..      /// i
1ada0 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
1adb0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1adc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
1add0 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
1ade0 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20  oduleHandle">.. 
1adf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1ae00 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
1ae10 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79  e as returned by
1ae20 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c   LoadLibrary wil
1ae30 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20  l be stored..   
1ae40 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20     /// here, if 
1ae50 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73  necessary.  This
1ae60 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49   value will be I
1ae70 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68  ntPtr.Zero if th
1ae80 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20  e call to..     
1ae90 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79   /// LoadLibrary
1aea0 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f   fails...      /
1aeb0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1aec0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1aed0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
1aee0 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69  zero if the nati
1aef0 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f  ve module was lo
1af00 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  aded successfull
1af10 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  y; otherwise,.. 
1af20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a       /// zero...
1af30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1af40 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
1af50 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
1af60 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
1af70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
1af80 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
1af90 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  y,            /*
1afa0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1afb0 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
1afc0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
1afd0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1afe0 20 20 20 20 20 20 20 62 6f 6f 6c 20 61 6c 6c 6f         bool allo
1aff0 77 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e  wBaseDirectoryOn
1b000 6c 79 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  ly,     /* in */
1b010 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
1b020 73 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64  string nativeMod
1b030 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20  uleFileName, /* 
1b040 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1b050 20 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74    ref IntPtr nat
1b060 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
1b070 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
1b080 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1b090 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
1b0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1b0b0 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
1b0c0 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63  ified base direc
1b0d0 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73  tory is null, us
1b0e0 65 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20  e the default.. 
1b0f0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b100 20 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20    (i.e. attempt 
1b110 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
1b120 20 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20   detect it)...  
1b130 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b140 20 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69        if (baseDi
1b150 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
1b160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b170 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
1b180 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
1b190 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
1b1a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1b1b0 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
1b1c0 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
1b1d0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
1b1e0 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
1b1f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b200 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72       if (baseDir
1b210 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
1b220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1b230 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1b240 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b250 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1b260 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
1b270 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
1b280 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
1b290 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
1b2a0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1b2b0 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
1b2c0 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
1b2d0 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
1b2e0 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
1b2f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b300 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
1b310 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
1b320 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
1b330 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
1b340 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
1b350 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1b370 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1b380 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b390 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b3a0 49 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  If the native SQ
1b3b0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69  Lite library exi
1b3c0 73 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20  sts in the base 
1b3d0 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
1b3e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74       //       it
1b3f0 73 65 6c 66 2c 20 70 6f 73 73 69 62 6c 79 20 73  self, possibly s
1b400 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
1b410 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b420 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
1b430 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
1b440 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
1b450 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63 74  ePath(baseDirect
1b460 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
1b470 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79      fileNameOnly
1b480 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
1b490 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
1b4a0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
1b4b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b4c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b4d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1b4e0 45 3a 20 49 66 20 74 68 65 20 63 61 6c 6c 65 72  E: If the caller
1b4f0 20 69 73 20 61 6c 6c 6f 77 69 6e 67 20 74 68 65   is allowing the
1b500 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
1b510 69 74 73 65 6c 66 0d 0a 20 20 20 20 20 20 20 20  itself..        
1b520 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1b530 6f 20 62 65 20 75 73 65 64 2c 20 61 6c 73 6f 20  o be used, also 
1b540 6d 61 6b 65 20 73 75 72 65 20 61 20 70 72 6f 63  make sure a proc
1b550 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1b560 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  re..            
1b570 20 20 2f 2f 20 20 20 20 20 20 20 77 61 73 20 6e    //       was n
1b580 6f 74 20 73 70 65 63 69 66 69 65 64 3b 20 69 66  ot specified; if
1b590 20 65 69 74 68 65 72 20 63 6f 6e 64 69 74 69 6f   either conditio
1b5a0 6e 20 69 73 20 66 61 6c 73 65 20 6a 75 73 74 0d  n is false just.
1b5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1b5c0 2f 20 20 20 20 20 20 20 73 74 6f 70 20 6e 6f 77  /       stop now
1b5d0 20 61 6e 64 20 72 65 74 75 72 6e 20 66 61 69 6c   and return fail
1b5e0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
1b5f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b600 20 20 20 20 20 20 69 66 20 28 61 6c 6c 6f 77 42        if (allowB
1b610 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79  aseDirectoryOnly
1b620 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
1b630 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 49 73         String.Is
1b640 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63  NullOrEmpty(proc
1b650 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1b660 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
1b670 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b680 20 20 20 20 20 20 20 20 67 6f 74 6f 20 62 61 73          goto bas
1b690 65 44 69 72 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20  eDirOnly;..     
1b6a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b6b0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
1b6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b6d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b6e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b700 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
1b710 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1b720 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1b730 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
1b740 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
1b750 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
1b760 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
1b770 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1b780 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
1b790 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b7a0 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
1b7b0 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
1b7c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1b7d0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
1b7e0 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
1b7f0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
1b800 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
1b810 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b820 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
1b830 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
1b840 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
1b850 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
1b860 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
1b870 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1b880 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
1b890 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
1b8a0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b8b0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b8c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1b8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1b8e0 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66  OTE: Build the f
1b8f0 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c  ull path and fil
1b900 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
1b910 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
1b920 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1b930 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74   library using t
1b940 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
1b950 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d  hitecture name..
1b960 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1b970 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
1b980 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
1b990 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
1b9a0 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69  ePath(MaybeCombi
1b9b0 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
1b9c0 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
1b9d0 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41  tory, processorA
1b9e0 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 66 69  rchitecture), fi
1b9f0 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
1ba00 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1ba10 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1ba20 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61  : If the file na
1ba30 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  me based on the 
1ba40 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1ba50 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20  ecture name..   
1ba60 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74         // is not
1ba70 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e   found, try usin
1ba80 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  g the associated
1ba90 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
1baa0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1bab0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
1bac0 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1bad0 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1bae0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1baf0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1bb00 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
1bb10 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  mpt to translate
1bb20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
1bb30 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 61  rchitecture to a
1bb40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bb50 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72  //       platfor
1bb60 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  m name...       
1bb70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bb80 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1bb90 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47  platformName = G
1bba0 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70  etPlatformName(p
1bbb0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
1bbc0 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ture);....      
1bbd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1bbe0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1bbf0 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
1bc00 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65  to translate the
1bc10 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20   platform name, 
1bc20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
1bc30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1bc40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
1bc50 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e  latformName == n
1bc60 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1bc70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1bc80 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1bc90 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bca0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1bcb0 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
1bcc0 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
1bcd0 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
1bce0 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
1bcf0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1bd00 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
1bd10 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  the platform nam
1bd20 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1bd30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1bd40 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
1bd50 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
1bd60 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
1bd70 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
1bd80 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
1bd90 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
1bda0 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ory, platformNam
1bdb0 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
1bdc0 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
1bdd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1bde0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1bdf0 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73  If the file does
1be00 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70   not exist, skip
1be10 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
1be20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
1be30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1be40 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
1be50 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
1be60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1be70 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1be80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
1be90 0d 0a 20 20 20 20 20 20 62 61 73 65 44 69 72 4f  ..      baseDirO
1bea0 6e 6c 79 3a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nly:....        
1beb0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1bec0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1bed0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1bee0 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
1bef0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1bf00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bf10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1bf30 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
1bf40 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72  how exactly wher
1bf50 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20  e we are trying 
1bf60 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
1bf70 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
1bf80 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
1bf90 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72  QLite library fr
1bfa0 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  om...           
1bfb0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1bfd0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1bfe0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1bff0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c010 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1c020 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c040 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
1c050 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73  ry pre-loader is
1c060 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
1c070 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
1c080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c090 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
1c0a0 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66  y \"{0}\"...", f
1c0b0 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68  ileName)); /* th
1c0c0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1c0d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c0e0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c110 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1c120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1c130 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1c140 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1c150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1c160 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
1c170 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
1c180 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77  library.  This w
1c190 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20  ill either..    
1c1a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1c1b0 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69     return a vali
1c1c0 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
1c1d0 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49  handle, return I
1c1e0 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20  ntPtr.Zero,..   
1c1f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1c200 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20      or throw an 
1c210 65 78 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73  exception.  This
1c220 20 6d 75 73 74 20 75 73 65 20 74 68 65 20 61 70   must use the ap
1c230 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
1c240 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1c250 20 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f    P/Invoke metho
1c260 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  d for the curren
1c270 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
1c280 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  em...           
1c290 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1c2a0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
1c2b0 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  eFileName = file
1c2c0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
1c2d0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
1c2e0 65 48 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65  eHandle = Native
1c2f0 4c 69 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f  LibraryHelper.Lo
1c300 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
1c310 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1c320 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61        return (na
1c330 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
1c340 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1c350 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
1c360 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1c370 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
1c380 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
1c390 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
1c3a0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1c3b0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
1c3c0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
1c3d0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
1c3e0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1c3f0 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
1c400 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
1c410 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1c420 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c430 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c450 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20  // NOTE: First, 
1c460 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69  grab the last Wi
1c470 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72  n32 error number
1c480 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1c490 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1c4a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1c4b0 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68  astError = Marsh
1c4c0 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45  al.GetLastWin32E
1c4d0 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77  rror(); /* throw
1c4e0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
1c4f0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1c500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c510 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65  / NOTE: Show whe
1c520 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  re we failed to 
1c530 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
1c540 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
1c550 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1c560 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20     library from 
1c570 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57  along with the W
1c580 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20  in32 error code 
1c590 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
1c5a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1c5b0 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d  exception inform
1c5c0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
1c5d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5f0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1c600 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
1c610 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
1c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c630 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1c640 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c660 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
1c670 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
1c680 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
1c690 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6b0 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
1c6c0 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61  y \"{0}\" (getLa
1c6d0 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20  stError = {1}): 
1c6e0 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
1c700 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72  eName, lastError
1c710 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1c720 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1c730 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c740 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1c750 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1c770 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
1c780 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1c790 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1c7a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
1c7b0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
1c7c0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1c7d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
1c7e0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1c7f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1c840 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1c850 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c860 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1c870 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
1c880 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
1c890 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
1c8a0 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
1c8b0 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
1c8c0 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
1c8d0 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
1c8e0 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
1c8f0 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
1c900 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
1c910 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
1c920 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
1c930 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
1c940 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
1c950 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
1c960 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
1c970 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
1c980 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
1c990 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
1c9a0 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
1c9b0 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
1c9c0 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
1c9d0 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
1c9e0 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
1c9f0 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
1ca00 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
1ca10 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
1ca20 65 72 6f 70 2e 31 31 32 2e 64 6c 6c 22 3b 0d 0a  erop.112.dll";..
1ca30 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
1ca40 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
1ca50 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
1ca60 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
1ca70 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
1ca80 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
1ca90 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
1caa0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
1cab0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
1cac0 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
1cad0 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
1cae0 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
1caf0 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1cb00 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20  : Otherwise, if 
1cb10 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1cb20 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
1cb30 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a  ly is enabled,..
1cb40 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
1cb50 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
1cb60 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
1cb70 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
1cb80 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
1cb90 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73  erop.dll";..#els
1cba0 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  e..    //..    /
1cbb0 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c  / NOTE: Finally,
1cbc0 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 65   assume that the
1cbd0 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65   mixed-mode asse
1cbe0 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73  mbly is being us
1cbf0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
1cc00 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
1cc10 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
1cc20 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61  L = "System.Data
1cc30 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23  .SQLite.dll";..#
1cc40 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20  endif....    // 
1cc50 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65  This section use
1cc60 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20  s interop calls 
1cc70 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20  that also fetch 
1cc80 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f  text length to o
1cc90 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69  ptimize conversi
1cca0 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e  on...    // When
1ccb0 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
1ccc0 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20  ard dll, we can 
1ccd0 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63 61  replace these ca
1cce0 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20  lls with normal 
1ccf0 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64  sqlite calls and
1cd00 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70  ..    // do unop
1cd10 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69  timized conversi
1cd20 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65  ons instead afte
1cd30 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67  rwards..    #reg
1cd40 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
1cd50 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c  d textlength cal
1cd60 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ls....#if !SQLIT
1cd70 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
1cd80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cd90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cda0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cdb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1cdc0 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
1cdd0 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ter_name_interop
1cde0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cdf0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1ce00 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1ce10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ce20 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ce30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ce40 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1ce50 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
1ce60 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
1ce70 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1ce80 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
1ce90 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1cea0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ceb0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1cec0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1ced0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1cee0 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
1cef0 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
1cf00 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1cf10 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1cf20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1cf30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1cf40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1cf50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1cf60 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1cf70 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74  umn_decltype_int
1cf80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1cf90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1cfa0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1cfb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cfc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cfd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cfe0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1cff0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
1d000 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  type16_interop(I
1d010 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d020 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1d030 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1d040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d050 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d060 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d070 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1d080 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72  olumn_name_inter
1d090 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1d0a0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1d0b0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1d0c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d0d0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d0e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d0f0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d100 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
1d110 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1d120 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1d130 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1d140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d150 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d160 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d170 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1d180 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1d190 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65  origin_name_inte
1d1a0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1d1b0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
1d1c0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
1d1d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d1e0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1d1f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d200 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1d210 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1d220 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
1d230 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1d240 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1d250 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1d260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d270 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1d280 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d290 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1d2a0 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
1d2b0 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
1d2c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d2d0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1d2e0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d2f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d300 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d310 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d320 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1d330 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69  n_table_name16_i
1d340 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1d350 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1d360 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d370 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d380 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d390 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d3a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d3b0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
1d3c0 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
1d3d0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d3e0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1d3f0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d400 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d410 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d420 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d430 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1d440 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  n_text16_interop
1d450 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1d460 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1d470 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1d480 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d490 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1d4a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d4b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1d4c0 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28  _errmsg_interop(
1d4d0 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 69  IntPtr db, ref i
1d4e0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1d4f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d500 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d510 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d520 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d530 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
1d540 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  are_interop(IntP
1d550 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
1d560 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
1d570 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
1d580 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
1d590 65 6d 61 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e  emain, ref int n
1d5a0 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Remain);....    
1d5b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d5c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d5d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d5e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d5f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
1d600 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
1d610 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  a_interop(IntPtr
1d620 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61   db, byte[] dbNa
1d630 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  me, byte[] tblNa
1d640 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61  me, byte[] colNa
1d650 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1d660 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20  trDataType, ref 
1d670 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65  IntPtr ptrCollSe
1d680 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75  q, ref int notNu
1d690 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d  ll, ref int prim
1d6a0 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20  aryKey, ref int 
1d6b0 61 75 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74  autoInc, ref int
1d6c0 20 64 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20   dtLen, ref int 
1d6d0 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  csLen);....    [
1d6e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d6f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1d700 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d710 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1d720 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74  3_value_text_int
1d730 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
1d740 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d750 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d760 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d770 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d780 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d790 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
1d7a0 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
1d7b0 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
1d7c0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1d7d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d7e0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d7f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1d800 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  nt sqlite3_mallo
1d810 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49  c_size_interop(I
1d820 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1d830 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20   INTEROP_LOG..  
1d840 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d850 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d860 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d870 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1d880 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
1d890 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70  nfig_log_interop
1d8a0 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  ();..#endif..#en
1d8b0 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
1d8c0 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
1d8d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1d8e0 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74    // These funct
1d8f0 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74 69 6e  ions add existin
1d900 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20  g functionality 
1d910 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69 74 65  on top of SQLite
1d920 20 61 6e 64 20 72 65 71 75 69 72 65 20 61 20 6c   and require a l
1d930 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d  ittle effort to.
1d940 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b  .    // get work
1d950 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ing when using t
1d960 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
1d970 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
1d980 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
1d990 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f 6e 61   added functiona
1d9a0 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  lity....#if !SQL
1d9b0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
1d9c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d9d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d9e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d9f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
1da00 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f  nterop_libversio
1da10 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  n();....    [Dll
1da20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1da30 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1da40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1da50 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 73  IntPtr interop_s
1da60 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20  ourceid();....  
1da70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1da80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1da90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1daa0 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f  xtern int intero
1dab0 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  p_compileoption_
1dac0 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74  used(IntPtr zOpt
1dad0 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  Name);....    [D
1dae0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1daf0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1db00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1db10 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
1db20 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
1db30 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20  et(int N);....  
1db40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1db50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1db60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1db70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1db80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
1db90 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ose_interop(IntP
1dba0 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tr db);....    [
1dbb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dbc0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1dbd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1dbe0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1dbf0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
1dc00 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72  e_function_inter
1dc10 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
1dc20 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
1dc30 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
1dc40 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1dc50 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
1dc60 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
1dc70 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
1dc80 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
1dc90 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65  k ffinal, int ne
1dca0 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20  edCollSeq);.... 
1dcb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dcc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1dcd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1dce0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1dcf0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
1dd00 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28  inalize_interop(
1dd10 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1dd20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1dd30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1dd40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1dd50 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1dd60 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1dd70 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
1dd80 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61  nterop(IntPtr ba
1dd90 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ckup);....    [D
1dda0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ddb0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ddc0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ddd0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1dde0 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63  e sqlite3_blob_c
1ddf0 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lose_interop(Int
1de00 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20  Ptr blob);....  
1de10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1de20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1de30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1de40 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1de50 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
1de60 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
1de70 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
1de80 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
1de90 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
1dea0 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
1deb0 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
1dec0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
1ded0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dee0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1def0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1df00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1df10 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
1df20 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  16_interop(byte[
1df30 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
1df40 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
1df50 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
1df60 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
1df70 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
1df80 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
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 20 20 20 20 69 6e 74  E_DLL)]..    int
1dfb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1dfc0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1dfd0 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65  ode sqlite3_rese
1dfe0 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
1dff0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
1e000 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e010 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1e020 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e030 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1e040 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49  hanges_interop(I
1e050 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
1e060 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53  if..// !SQLITE_S
1e070 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
1e080 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1e090 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64   // The standard
1e0a0 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61   api call equiva
1e0b0 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f  lents of the abo
1e0c0 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  ve interop calls
1e0d0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
1e0e0 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20  andard versions 
1e0f0 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74  of interop funct
1e100 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ions....#if SQLI
1e110 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23  TE_STANDARD....#
1e120 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e130 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e150 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e160 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e170 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e180 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e190 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e1a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e1b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e1c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e1d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e1e0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e  sqlite3_close(In
1e1f0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1e200 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59   !INTEROP_LEGACY
1e210 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41  _CLOSE..#if !PLA
1e220 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e230 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e240 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e250 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e260 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e270 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e280 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e290 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e2a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e2b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e2c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1e2d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1e2e0 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72  _close_v2(IntPtr
1e2f0 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b   db); /* 3.7.14+
1e300 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23   */..#endif....#
1e310 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e320 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e330 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e340 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e350 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e360 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e370 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e380 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e390 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e3a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e3b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e3c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e3d0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
1e3e0 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  unction(IntPtr d
1e3f0 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
1e400 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
1e410 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
1e420 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
1e430 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
1e440 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
1e450 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
1e460 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d  llback ffinal);.
1e470 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e480 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e490 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e4a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e4b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e4c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e4d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e4e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e4f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e500 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e510 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e520 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e530 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  ode sqlite3_fina
1e540 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74  lize(IntPtr stmt
1e550 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1e560 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e570 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e580 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e590 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e5a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e5b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e5c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e5d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e5e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e5f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e600 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1e610 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1e620 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74  ackup_finish(Int
1e630 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
1e640 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e650 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e670 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e680 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e690 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e6a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e6b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e6c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e6d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e6e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e6f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e700 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49   sqlite3_reset(I
1e710 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1e720 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e730 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e740 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e750 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e760 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e770 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e780 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e790 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e7a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e7b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e7c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e7d0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1e7e0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
1e7f0 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
1e800 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1e810 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e820 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e830 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e840 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e860 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e870 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e880 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e890 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e8a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e8b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e8c0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1e8d0 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
1e8e0 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
1e8f0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1e900 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e910 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e930 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e950 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e960 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e970 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e980 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e990 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e9a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e9b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1e9c0 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
1e9d0 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1e9e0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1e9f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ea00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ea10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ea20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ea30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ea40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ea50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ea60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ea70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ea80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ea90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1eaa0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1eab0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1eac0 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
1ead0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1eae0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1eaf0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eb00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1eb10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1eb20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1eb30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eb40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1eb50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1eb60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1eb70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1eb80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1eb90 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1eba0 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
1ebb0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1ebc0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1ebd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ebe0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ebf0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ec00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ec10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ec20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ec30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ec40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ec50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ec60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ec70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1ec80 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1ec90 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  lumn_name(IntPtr
1eca0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1ecb0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ecc0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ecd0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ece0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ecf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ed00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ed10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ed20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ed30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ed40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ed50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ed60 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ed70 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
1ed80 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1ed90 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1eda0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1edb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1edc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1edd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ede0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1edf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ee00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ee10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ee20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ee30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ee40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ee50 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1ee60 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
1ee70 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
1ee80 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1ee90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1eea0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1eeb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1eec0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1eed0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1eee0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1eef0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ef00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ef10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ef20 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1ef30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ef40 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1ef50 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
1ef60 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1ef70 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1ef80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ef90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1efa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1efb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1efc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1efd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1efe0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1eff0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f000 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f010 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f020 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f030 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1f040 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
1f050 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1f060 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1f070 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f080 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f0a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f0b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f0c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f0d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f0e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f0f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f100 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f110 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1f120 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1f130 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
1f140 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1f150 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1f160 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f170 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f180 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f190 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f1a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f1b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f1c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f1d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f1e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f1f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f200 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1f210 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1f220 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72  lumn_text(IntPtr
1f230 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1f240 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f260 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f290 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f2a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f2b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f2c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f2d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f2e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f2f0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1f300 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
1f310 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
1f320 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1f330 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f340 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f350 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f360 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f370 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f380 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f390 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f3a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f3b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f3c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f3d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f3e0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1f3f0 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62  errmsg(IntPtr db
1f400 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f410 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f420 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f430 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f440 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f450 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f460 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f470 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f480 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f490 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f4a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f4b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f4c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70  orCode sqlite3_p
1f4d0 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62  repare(IntPtr db
1f4e0 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
1f4f0 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
1f500 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
1f510 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
1f520 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52  );....#if USE_PR
1f530 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50  EPARE_V2..#if !P
1f540 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f550 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f560 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f570 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f580 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f590 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f5a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f5b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f5c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f5d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f5e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f5f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f600 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e  e3_prepare_v2(In
1f610 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
1f620 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
1f630 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
1f640 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
1f650 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69  rRemain);..#endi
1f660 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
1f670 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f680 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f690 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f6a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f6b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f6c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f6d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f6e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f6f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f700 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f710 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1f720 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
1f730 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
1f740 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ata(IntPtr db, b
1f750 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
1f760 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
1f770 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
1f780 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
1f790 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
1f7a0 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
1f7b0 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
1f7c0 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
1f7d0 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
1f7e0 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  c);....#if !PLAT
1f7f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f800 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1f810 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f820 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1f830 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1f840 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1f850 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1f860 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f870 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1f880 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f890 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1f8a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
1f8b0 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  t(IntPtr p);....
1f8c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f8d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f8e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f8f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f920 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f930 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f940 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f950 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f960 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f970 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1f980 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74  value_text16(Int
1f990 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69  Ptr p);....#endi
1f9a0 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45  f..    // SQLITE
1f9b0 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
1f9c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1f9d0 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63     // These func
1f9e0 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d  tions are custom
1f9f0 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75   and have no equ
1fa00 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64  ivalent standard
1fa10 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e   library method.
1fa20 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20  ..    // All of 
1fa30 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74  them are "nice t
1fa40 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74  o haves" and not
1fa50 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65   necessarily "ne
1fa60 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20  ed to haves"... 
1fa70 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71     #region no eq
1fa80 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72  uivalent standar
1fa90 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20  d method....#if 
1faa0 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1fab0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1fac0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1fad0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fae0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1faf0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  tr sqlite3_conte
1fb00 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72  xt_collseq_inter
1fb10 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1fb20 74 2c 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c  t, ref int type,
1fb30 20 72 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65   ref int enc, re
1fb40 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1fb50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fb60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1fb70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fb80 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1fb90 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63  e3_context_collc
1fba0 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49  ompare_interop(I
1fbb0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
1fbc0 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31  yte[] p1, int p1
1fbd0 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20  len, byte[] p2, 
1fbe0 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20  int p2len);.... 
1fbf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fc00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1fc10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fc20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1fc30 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1fc40 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65  ursor_rowid_inte
1fc50 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1fc60 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66   int cursor, ref
1fc70 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d   long rowid);...
1fc80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fc90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1fca0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1fcb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1fcc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1fcd0 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e  _index_column_in
1fce0 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  fo_interop(IntPt
1fcf0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74  r db, byte[] cat
1fd00 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64  alog, byte[] Ind
1fd10 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43  exName, byte[] C
1fd20 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69  olumnName, ref i
1fd30 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65  nt sortOrder, re
1fd40 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72  f int onError, r
1fd50 65 66 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74  ef IntPtr Collat
1fd60 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c  ion, ref int col
1fd70 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  llen);....    [D
1fd80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fd90 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1fda0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1fdb0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61  n int sqlite3_ta
1fdc0 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72  ble_cursor_inter
1fdd0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1fde0 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c  int db, int tabl
1fdf0 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23  eRootPage);....#
1fe00 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
1fe10 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
1fe20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fe30 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20      // Standard 
1fe40 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c  API calls global
1fe50 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73   across versions
1fe60 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66  .  There are a f
1fe70 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  ew instances of 
1fe80 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
1fe90 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
1fea0 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
1feb0 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
1fec0 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
1fed0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1fee0 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20   is declared... 
1fef0 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
1ff00 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
1ff10 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  alls....#if !PLA
1ff20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ff30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ff40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ff50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1ff60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1ff70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ff80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1ff90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ffa0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ffb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ffc0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1ffd0 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
1ffe0 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
1fff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20010 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20020 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
20030 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20040 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20050 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20070 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20090 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
200a0 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
200b0 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69  _number();....#i
200c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
200d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
200e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
200f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20100 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20110 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20120 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20130 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20140 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20150 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20160 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
20170 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f  ntPtr sqlite3_so
20180 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66  urceid();....#if
20190 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
201a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
201b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
201c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
201d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
201e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
201f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20210 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20220 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20230 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
20240 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  t sqlite3_compil
20250 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
20260 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
20270 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20280 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20290 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
202a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
202b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
202c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
202d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
202e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
202f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20300 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20310 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20320 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20330 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
20340 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23  get(int N);....#
20350 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20360 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20370 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20380 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20390 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
203a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
203b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
203c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
203d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
203e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
203f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20400 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20410 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
20420 68 61 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20  hared_cache(..  
20430 20 20 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65        int enable
20440 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20450 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20460 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20470 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20480 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20490 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
204a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
204b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
204c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
204d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
204e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
204f0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20500 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
20510 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
20520 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
20530 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e  ntPtr db, int en
20540 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
20550 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20560 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20570 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20580 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20590 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
205a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
205b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
205c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
205d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
205e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
205f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20600 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20610 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
20620 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
20630 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69  tr db, byte[] fi
20640 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70  leName, byte[] p
20650 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  rocName, ref Int
20660 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a  Ptr pError);....
20670 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20680 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20690 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
206a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
206b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
206c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
206d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
206e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
206f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20700 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20710 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20720 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20730 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
20740 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  d_function(IntPt
20750 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61  r db, IntPtr zNa
20760 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d  me, int nArgs);.
20770 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a  ...#if WINDOWS..
20780 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20790 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
207a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
207b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
207c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
207d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
207e0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
207f0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
20800 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
20810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20820 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
20830 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
20840 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20850 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
20860 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
20870 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
20880 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  y" SQLite core l
20890 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
208a0 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
208b0 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
208c0 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20  on Windows...   
208d0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
208e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
208f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20900 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
20910 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
20920 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
20930 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45  lue);....#if !DE
20940 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f  BUG // NOTE: Sho
20950 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48 45 41  uld be "WIN32HEA
20960 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d  P && !MEMDEBUG".
20970 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20980 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20990 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
209a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
209b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
209c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
209d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
209e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
209f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20a00 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
20a10 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
20a20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72  "sqlite3_win32_r
20a30 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74  eset_heap" SQLit
20a40 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
20a50 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
20a60 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
20a70 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
20a80 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
20a90 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
20aa0 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
20ab0 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
20ac0 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
20ad0 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
20ae0 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
20af0 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
20b00 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
20b10 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
20b20 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
20b30 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
20b40 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
20b50 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
20b60 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
20b70 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
20b80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20b90 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20ba0 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
20bb0 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d  2_reset_heap();.
20bc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20bd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20be0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20bf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20c00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20c10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20c20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20c30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20c40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20c50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
20c60 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
20c70 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
20c80 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53  _compact_heap" S
20c90 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
20ca0 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
20cb0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
20cc0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
20cd0 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
20ce0 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
20cf0 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
20d00 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
20d10 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
20d20 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
20d30 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
20d40 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
20d50 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
20d60 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
20d70 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
20d80 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
20d90 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
20da0 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
20db0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
20dc0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
20dd0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20de0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
20df0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
20e00 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
20e10 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67  ap(ref uint larg
20e20 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  est);..#endif..#
20e30 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
20e40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20e50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20e60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20e70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
20e80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20e90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20ea0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20eb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20ec0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20ed0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20ee0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
20ef0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
20f00 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
20f10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20f20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
20f30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20f40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20f50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20f60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20f70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20f80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20f90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20fa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20fb0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
20fc0 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  tr sqlite3_mallo
20fd0 63 36 34 28 75 6c 6f 6e 67 20 6e 29 3b 0d 0a 0d  c64(ulong n);...
20fe0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20ff0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21000 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21010 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21020 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21030 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21040 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21060 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21070 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21080 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21090 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
210a0 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20  _realloc(IntPtr 
210b0 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  p, int n);....#i
210c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
210d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
210e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
210f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21100 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21110 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21120 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
21130 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21140 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21150 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21160 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
21170 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65  ntPtr sqlite3_re
21180 61 6c 6c 6f 63 36 34 28 49 6e 74 50 74 72 20 70  alloc64(IntPtr p
21190 2c 20 75 6c 6f 6e 67 20 6e 29 3b 0d 0a 0d 0a 23  , ulong n);....#
211a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
211b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
211c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
211d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
211e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
211f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21200 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21210 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21220 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21230 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21240 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21250 75 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 73  ulong sqlite3_ms
21260 69 7a 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ize(IntPtr p);..
21270 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21280 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21290 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
212a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
212b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
212c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
212d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
212e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
212f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21300 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21310 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21320 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
21330 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
21340 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21350 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21360 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21370 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21380 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21390 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
213a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
213b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
213c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
213d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
213e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
213f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21400 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
21410 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
21420 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ilename, ref Int
21430 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
21440 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
21450 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  s, byte[] vfsNam
21460 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
21470 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21480 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21490 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
214a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
214b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
214c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
214d0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
214e0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
214f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21500 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
21510 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
21520 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
21530 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21540 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
21550 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
21560 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72  lite3_open16(str
21570 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65  ing fileName, re
21580 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
21590 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
215a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
215b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
215c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
215d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
215e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
215f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21600 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21610 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21620 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21630 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21640 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69  n void sqlite3_i
21650 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72 20  nterrupt(IntPtr 
21660 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
21670 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21680 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21690 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
216a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
216b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
216c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
216d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
216e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
216f0 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  g sqlite3_last_i
21700 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50  nsert_rowid(IntP
21710 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  tr db);..#endif.
21720 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21730 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21740 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21750 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21760 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21770 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21780 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21790 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
217a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
217b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
217c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
217d0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
217e0 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64  changes(IntPtr d
217f0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
21800 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21810 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21820 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21830 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21840 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21850 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21860 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21870 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
21880 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
21890 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  used();..#endif.
218a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
218b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
218c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
218d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
218e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
218f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21900 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
21910 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21920 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
21930 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
21940 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46  water(int resetF
21950 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lag);..#endif...
21960 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21970 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21980 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21990 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
219a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
219b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
219c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
219d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
219e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
219f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21a00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21a10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21a20 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  e sqlite3_shutdo
21a30 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  wn();....#if !PL
21a40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21a50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21a60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21a70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21a80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21a90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21aa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21ab0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21ac0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21ad0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21ae0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21af0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21b00 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49  3_busy_timeout(I
21b10 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73  ntPtr db, int ms
21b20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21b30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21b40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21b50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21b60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21b70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21b80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21b90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21ba0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21bb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21bc0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21bd0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21be0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
21bf0 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e  lear_bindings(In
21c00 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
21c10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21c20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21c30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21c40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21c50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21c60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21c70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21c80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21c90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21ca0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21cb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21cc0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
21cd0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
21ce0 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
21cf0 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d  nt index, Byte[]
21d00 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
21d10 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73  e, IntPtr nTrans
21d20 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ient);....#if !P
21d30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21d40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21d50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21d60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21d70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21d80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21d90 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
21da0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
21db0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
21dc0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
21dd0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
21de0 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c  int index, doubl
21df0 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
21e00 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
21e10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21e20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21e30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21e40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21e50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21e60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21e70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21e80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21e90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21ea0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21eb0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21ec0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
21ed0 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  nd_int(IntPtr st
21ee0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
21ef0 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  nt value);....  
21f00 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
21f10 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
21f20 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
21f30 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f  e3_bind_int"; ho
21f40 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68  wever, it has th
21f50 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
21f60 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67  correct type sig
21f70 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e  nature for an un
21f80 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20  signed (32-bit) 
21f90 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
21fa0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21fb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21fc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21fd0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
21fe0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
21ff0 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61  e3_bind_int", Ca
22000 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22010 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22020 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22030 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22040 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
22050 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
22060 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d  ite3_bind_int")]
22070 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22090 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
220a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
220b0 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74  d_uint(IntPtr st
220c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
220d0 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
220e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
220f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22100 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22110 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22120 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22130 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22140 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
22150 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22160 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
22170 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
22180 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
22190 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c  mt, int index, l
221a0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
221b0 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dif....    //.. 
221c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
221d0 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
221e0 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
221f0 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72  _int64"; however
22200 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
22210 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
22220 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
22230 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
22240 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20  d long (64-bit) 
22250 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
22260 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22270 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22280 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22290 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
222a0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
222b0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20  e3_bind_int64", 
222c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
222d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
222e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
222f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22300 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22310 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
22320 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e  3_bind_uint64(In
22330 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
22340 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75  ndex, ulong valu
22350 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
22360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22380 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22390 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
223a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
223b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
223c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
223d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
223e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
223f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22400 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22410 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
22420 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
22430 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  l(IntPtr stmt, i
22440 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
22450 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22460 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22470 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22480 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22490 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
224a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
224b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
224c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
224d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
224e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
224f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
22500 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
22510 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
22520 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
22530 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20  t index, byte[] 
22540 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
22550 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
22560 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
22570 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22580 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22590 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
225a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
225b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
225c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
225d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
225e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
225f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22600 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22610 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
22620 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
22630 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ter_count(IntPtr
22640 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
22650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
226a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
226b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
226c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
226d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
226e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
226f0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
22700 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
22710 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74  ameter_index(Int
22720 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d  Ptr stmt, byte[]
22730 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   strName);....#i
22740 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22750 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22760 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22770 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22780 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22790 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
227a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
227b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
227c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
227d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
227e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
227f0 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
22800 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  n_count(IntPtr s
22810 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
22820 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22830 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22840 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22850 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22860 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22870 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22880 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22890 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
228a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
228b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
228c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
228d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
228e0 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74  3_step(IntPtr st
228f0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
22900 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22910 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22920 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22930 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22940 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22950 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22960 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22970 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22980 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22990 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
229a0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
229b0 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
229c0 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ly(IntPtr stmt);
229d0 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d   /* 3.7.4+ */...
229e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
229f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22a00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22a10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22a20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22a30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22a40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
22a50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22a60 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
22a70 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
22a80 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
22a90 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
22aa0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
22ab0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22ac0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22ad0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22ae0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22af0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22b00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22b10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22b20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22b30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22b40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22b50 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
22b60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
22b70 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
22b80 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
22b90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22ba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22bb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22bc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22bd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22bf0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
22c00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22c10 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
22c20 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
22c30 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
22c40 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
22c50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22c60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22c70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22c80 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22c90 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22ca0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22cb0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
22cc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22cd0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
22ce0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
22cf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
22d00 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
22d10 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72  lumn_blob(IntPtr
22d20 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
22d30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22d70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22d80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22d90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22da0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22db0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22dc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22de0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
22df0 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
22e00 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
22e10 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
22e20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22e30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22e40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22e50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22e60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22e70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22e80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22e90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22ea0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22eb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22ec0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22ed0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
22ee0 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73  bytes16(IntPtr s
22ef0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
22f00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22f10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22f20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22f30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22f50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22f60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22f70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22f80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22f90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22fa0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22fb0 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
22fc0 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
22fd0 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
22fe0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
22ff0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23000 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23020 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23030 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23050 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23060 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23070 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23080 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23090 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
230a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
230b0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
230c0 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
230d0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
230e0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
230f0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
23100 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
23110 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
23120 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23130 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23140 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23150 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23160 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23170 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23180 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23190 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
231a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
231b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
231c0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
231d0 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
231e0 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
231f0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
23200 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23210 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23220 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23230 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23240 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23250 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23260 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23270 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23280 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23290 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
232a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
232b0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
232c0 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
232d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
232e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
232f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23300 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23310 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23320 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23330 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23340 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23360 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23370 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23380 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
23390 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
233a0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
233b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
233c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
233d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
233e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
233f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23400 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23410 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23420 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23430 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23440 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23450 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
23460 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
23470 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29  ytes16(IntPtr p)
23480 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23490 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
234a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
234b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
234c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
234d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
234e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
234f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23500 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
23510 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
23520 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b  ouble(IntPtr p);
23530 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23540 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23550 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23560 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23570 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23580 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
235a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
235b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
235c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
235d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
235e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
235f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
23600 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
23610 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23620 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23630 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23640 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23650 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23660 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23670 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
23680 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23690 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
236a0 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
236b0 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
236c0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
236d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
236e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
236f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23710 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23720 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23730 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23750 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23760 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23770 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
23780 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
23790 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
237a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
237b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
237c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
237d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
237e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
237f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23800 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23810 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23820 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23830 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23840 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23850 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
23860 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e  3_result_blob(In
23870 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
23880 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
23890 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76  nSize, IntPtr pv
238a0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
238b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
238c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
238d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
238e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
238f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23900 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23910 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
23920 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23930 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
23940 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
23950 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
23960 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
23970 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
23980 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23990 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
239a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
239b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
239c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
239d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
239e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
239f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23a00 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23a10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23a20 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
23a30 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
23a40 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
23a50 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
23a60 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
23a70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23a80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23a90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23aa0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23ab0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23ac0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23ad0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23af0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23b00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23b10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23b20 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
23b30 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28  sult_error_code(
23b40 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
23b50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23b60 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
23b70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23b80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23b90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23ba0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23bb0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23bc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23bd0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23be0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23bf0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23c00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23c10 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
23c20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
23c30 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74  error_toobig(Int
23c40 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
23c50 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23c60 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23c70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23c80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23c90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23cb0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23cc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23cd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23ce0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23cf0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23d00 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
23d10 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
23d20 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  m(IntPtr context
23d30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23d70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23d80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23d90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23da0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23db0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23dc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23de0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
23df0 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65  te3_result_value
23e00 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
23e10 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d   IntPtr value);.
23e20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23e30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23e40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23e50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23e60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23e70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23e80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23e90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23ea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23eb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23ec0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23ed0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
23ee0 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
23ef0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
23f00 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
23f10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23f20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23f30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23f40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23f70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23f80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23f90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23fa0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23fb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23fc0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
23fd0 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63  ult_int(IntPtr c
23fe0 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75  ontext, int valu
23ff0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
24000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24020 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24030 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24040 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24050 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24060 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24070 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
24080 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
24090 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e  int64(IntPtr con
240a0 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  text, long value
240b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
240c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
240d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
240e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
240f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24100 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24110 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24120 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24130 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24140 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24150 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24160 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
24170 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
24180 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
24190 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
241a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
241b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
241c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
241d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
241e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
241f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24200 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24210 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24220 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24230 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24240 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
24250 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
24260 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
24270 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
24280 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
24290 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
242a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
242b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
242c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
242d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
242e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
242f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24300 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24310 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24320 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24330 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24340 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24350 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
24360 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
24370 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
24380 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
24390 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
243a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
243b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
243c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
243d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
243e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
243f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
24400 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
24410 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
24420 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24430 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
24440 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
24450 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
24460 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
24470 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
24480 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24490 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
244a0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
244b0 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
244c0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
244d0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
244e0 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
244f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24500 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24510 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24520 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24530 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24540 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
24550 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
24560 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
24570 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24580 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24590 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
245a0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
245b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
245c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
245d0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
245e0 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
245f0 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
24600 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
24610 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
24620 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24630 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24640 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24650 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24660 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24670 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24680 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
24690 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
246a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
246b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
246c0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
246d0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
246e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
246f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24700 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
24710 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
24720 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
24730 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
24740 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
24750 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
24760 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
24770 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
24780 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54  E_SEE..#if !PLAT
24790 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
247a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
247b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
247c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
247d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
247e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
247f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24800 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24810 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24820 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24830 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
24840 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
24850 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
24860 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
24870 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  eylen);....#if !
24880 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24890 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
248a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
248b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
248c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
248d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
248e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
248f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24900 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24910 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24920 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
24930 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24940 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72  te3_rekey(IntPtr
24950 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
24960 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23   int keylen);..#
24970 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54  endif....#if INT
24980 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50  EROP_INCLUDE_ZIP
24990 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  VFS..#if !PLATFO
249a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
249b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
249c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
249d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
249e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
249f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24a00 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24a10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24a20 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24a30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24a40 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
24a50 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23  sInit_v2();....#
24a60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24a70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24a80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24a90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24aa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24ab0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24ac0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24ad0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24ae0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24af0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24b00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24b10 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f  void zipvfsInit_
24b20 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b  v3(int regDflt);
24b30 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
24b40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24b50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24b60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24b70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24b80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24ba0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24bc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24bd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24be0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
24bf0 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
24c00 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74  ss_handler(IntPt
24c10 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53  r db, int ops, S
24c20 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c  QLiteProgressCal
24c30 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
24c40 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
24c50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24c60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24c70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24c80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24c90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24ca0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24cb0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24cc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24cd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24ce0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24cf0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24d00 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
24d10 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e  et_authorizer(In
24d20 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41  tPtr db, SQLiteA
24d30 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63  uthorizerCallbac
24d40 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
24d50 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
24d60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24d70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24d80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24d90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24da0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24db0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24dc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
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 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24df0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24e00 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
24e10 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74  tr sqlite3_updat
24e20 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  e_hook(IntPtr db
24e30 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61  , SQLiteUpdateCa
24e40 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
24e50 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
24e60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24e70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24e90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24ea0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24eb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24ec0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24ee0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24ef0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24f00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24f10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
24f20 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50  commit_hook(IntP
24f30 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d  tr db, SQLiteCom
24f40 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  mitCallback func
24f50 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
24f60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24f70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24f80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24f90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24fa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24fb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24fc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24fd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24fe0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24ff0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25000 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25010 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
25020 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74  ite3_trace(IntPt
25030 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63  r db, SQLiteTrac
25040 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
25050 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
25060 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25070 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25080 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
250a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
250b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
250c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
250d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
250e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
250f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25100 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25110 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
25120 65 33 5f 74 72 61 63 65 5f 76 32 28 49 6e 74 50  e3_trace_v2(IntP
25130 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61  tr db, SQLiteTra
25140 63 65 46 6c 61 67 73 20 6d 61 73 6b 2c 20 53 51  ceFlags mask, SQ
25150 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
25160 6b 32 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  k2 func, IntPtr 
25170 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  pvUser);....    
25180 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
25190 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20  _config() takes 
251a0 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
251b0 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
251c0 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
251d0 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
251e0 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
251f0 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77  ble calls that w
25200 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a  e want to use...
25210 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25220 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25230 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25240 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
25250 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
25260 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
25270 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25280 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25290 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
252a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
252b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
252c0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
252d0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
252e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
252f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25300 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25310 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f  qlite3_config_no
25320 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  ne(SQLiteConfigO
25330 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23  psEnum op);....#
25340 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25350 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25360 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25370 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
25380 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
25390 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
253a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
253b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
253c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
253d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
253e0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
253f0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
25400 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
25410 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25420 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
25430 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
25440 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74  lite3_config_int
25450 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
25460 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c  Enum op, int val
25470 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
25480 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25490 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
254a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
254b0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
254c0 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
254d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
254e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
254f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25500 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25510 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25520 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
25530 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
25540 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25550 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25560 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25570 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
25580 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65  onfig_log(SQLite
25590 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
255a0 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62  , SQLiteLogCallb
255b0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
255c0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
255d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
255e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
255f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25600 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
25610 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
25620 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
25630 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25650 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25670 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
25680 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
25690 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  _db_config")]..#
256a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
256b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
256c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
256d0 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e  e sqlite3_db_con
256e0 66 69 67 5f 63 68 61 72 70 74 72 28 49 6e 74 50  fig_charptr(IntP
256f0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e  tr db, SQLiteCon
25700 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c  figDbOpsEnum op,
25710 20 49 6e 74 50 74 72 20 63 68 61 72 50 74 72 29   IntPtr charPtr)
25720 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25730 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25740 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25760 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
25770 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
25780 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25790 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
257a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
257b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
257c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
257d0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
257e0 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
257f0 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
25800 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25810 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
25820 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25830 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f  3_db_config_int_
25840 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64 62  refint(IntPtr db
25850 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  , SQLiteConfigDb
25860 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
25870 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20 72  value, ref int r
25880 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  esult);....#if !
25890 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
258a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
258b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
258c0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
258d0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63   = "sqlite3_db_c
258e0 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
258f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25900 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25910 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25920 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25930 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
25940 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
25950 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  b_config")]..#en
25960 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25970 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25990 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
259a0 67 5f 69 6e 74 70 74 72 5f 74 77 6f 5f 69 6e 74  g_intptr_two_int
259b0 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  s(IntPtr db, SQL
259c0 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e  iteConfigDbOpsEn
259d0 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 74  um op, IntPtr pt
259e0 72 2c 20 69 6e 74 20 69 6e 74 30 2c 20 69 6e 74  r, int int0, int
259f0 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23 69 66 20 21   int1);....#if !
25a00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25a10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25a20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25a30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25a40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25a50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25a60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25a70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25a80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25a90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25aa0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
25ab0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
25ac0 74 65 33 5f 64 62 5f 73 74 61 74 75 73 28 49 6e  te3_db_status(In
25ad0 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 53  tPtr db, SQLiteS
25ae0 74 61 74 75 73 4f 70 73 45 6e 75 6d 20 6f 70 2c  tatusOpsEnum op,
25af0 20 72 65 66 20 69 6e 74 20 63 75 72 72 65 6e 74   ref int current
25b00 2c 20 72 65 66 20 69 6e 74 20 68 69 67 68 77 61  , ref int highwa
25b10 74 65 72 2c 20 69 6e 74 20 72 65 73 65 74 46 6c  ter, int resetFl
25b20 61 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ag);....#if !PLA
25b30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25b40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25b50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25b60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25b70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25b80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25b90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25ba0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25bb0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25bc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25bd0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
25be0 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
25bf0 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
25c00 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
25c10 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
25c20 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
25c30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25c40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25c50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25c60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
25c70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
25c80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25ca0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25cb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25cc0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25cd0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25ce0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
25cf0 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
25d00 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
25d10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25d20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25d30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25d40 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25d50 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25d60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25d70 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25d80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25d90 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25da0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25db0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
25dc0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
25dd0 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
25de0 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
25df0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25e00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25e10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25e20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25e30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25e40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25e50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25e60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25e70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25e80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25e90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25ea0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
25eb0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
25ec0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
25ed0 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
25ee0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25ef0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25f00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25f10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25f20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25f30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25f40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25f50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25f60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25f70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25f80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25f90 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f   int sqlite3_db_
25fa0 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20  readonly(IntPtr 
25fb0 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
25fc0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
25fd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25fe0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26000 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
26010 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
26020 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  ame", CallingCon
26030 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26040 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26050 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26060 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26070 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
26080 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
26090 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e  filename")]..#en
260a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
260b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
260c0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
260d0 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73  b_filename_bytes
260e0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
260f0 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  [] dbName);....#
26100 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26110 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26120 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26130 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26140 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26150 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26160 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26180 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26190 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
261a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
261b0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
261c0 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
261d0 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
261e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
261f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26200 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26210 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26220 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26230 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26240 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26250 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26270 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26280 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26290 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
262a0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
262b0 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ec(IntPtr db, by
262c0 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74  te[] strSql, Int
262d0 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20  Ptr pvCallback, 
262e0 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20  IntPtr pvParam, 
262f0 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73  ref IntPtr errMs
26300 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
26310 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26320 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
26330 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26340 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
26350 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
26360 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26370 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26380 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26390 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
263a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
263b0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
263c0 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
263d0 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d  ry(int nBytes);.
263e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
263f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26400 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26410 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26420 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26430 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26440 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26450 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26470 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26480 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26490 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
264a0 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49  get_autocommit(I
264b0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
264c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
264d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
264e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
264f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
26500 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
26510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26520 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
26530 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26540 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
26550 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
26560 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
26570 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
26580 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
26590 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74  result_codes(Int
265a0 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66  Ptr db, int onof
265b0 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  f);....#if !PLAT
265c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
265d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
265e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
265f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
26600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
26610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26640 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26650 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
26660 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
26670 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
26680 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
26690 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
266a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
266b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
266c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
266d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
266e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
266f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26700 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26720 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26730 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
26740 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
26750 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
26760 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
26770 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
26780 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26790 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
267a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
267b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
267c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
267d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
267e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
267f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26800 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26810 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26820 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26830 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
26840 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72  errstr(SQLiteErr
26850 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33  orCode rc); /* 3
26860 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20  .7.15+ */....   
26870 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
26880 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20  3_log() takes a 
26890 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e  variable argumen
268a0 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20  t list, we have 
268b0 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c  to overload decl
268c0 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  arations..    //
268d0 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
268e0 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f  e calls.  For no
268f0 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65  w, we are only e
26900 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65  xposing a single
26910 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20   string, and..  
26920 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74    // depend on t
26930 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72  he caller to for
26940 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d  mat the string..
26950 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26960 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26970 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26980 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
26990 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
269a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
269b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
269c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
269d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
269e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
269f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
26a00 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
26a10 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  og(SQLiteErrorCo
26a20 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74  de iErrCode, byt
26a30 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d  e[] zFormat);...
26a40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26a50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26a60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26a70 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
26a80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
26a90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26aa0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
26ab0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26ac0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
26ad0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
26ae0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
26af0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
26b00 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63  e sqlite3_file_c
26b10 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62  ontrol(IntPtr db
26b20 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65  , byte[] zDbName
26b30 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72  , int op, IntPtr
26b40 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21   pArg);....#if !
26b50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26b60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26b80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26b90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26bb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26bc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26bd0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26be0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26bf0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
26c00 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  tr sqlite3_backu
26c10 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65  p_init(IntPtr de
26c20 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65  stDb, byte[] zDe
26c30 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73  stName, IntPtr s
26c40 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20  ourceDb, byte[] 
26c50 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d  zSourceName);...
26c60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26c70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26c80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26c90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
26ca0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
26cb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26cc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
26cd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26ce0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
26cf0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
26d00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
26d10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
26d20 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
26d30 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63  _step(IntPtr bac
26d40 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b  kup, int nPage);
26d50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26d60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26d70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26d80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26d90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26da0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26db0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26dc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
26dd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
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 73 74 61 74 69 63 20 65 78  ternal static ex
26e00 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
26e10 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e  _backup_remainin
26e20 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  g(IntPtr backup)
26e30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26e40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26e50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26e60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26e70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26e80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26e90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26ea0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26eb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26ec0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26ed0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26ee0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
26ef0 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75  3_backup_pagecou
26f00 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  nt(IntPtr backup
26f10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26f20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26f30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
26f40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
26f50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26f60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
26f70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26f80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
26f90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26fa0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26fb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26fc0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
26fd0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
26fe0 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  lob_close(IntPtr
26ff0 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21   blob);....#if !
27000 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27010 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27020 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27030 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27040 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27050 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27060 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27070 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27080 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27090 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
270a0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
270b0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74  sqlite3_blob_byt
270c0 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b  es(IntPtr blob);
270d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
270e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
270f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
27100 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27110 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27120 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27130 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27140 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27150 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27160 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27170 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27180 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
27190 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
271a0 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62  b_open(IntPtr db
271b0 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
271c0 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
271d0 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
271e0 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74   long rowId, int
271f0 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50   flags, ref IntP
27200 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a  tr ptrBlob);....
27210 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27220 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27230 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27240 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27250 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27260 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27270 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27280 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27290 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
272a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
272b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
272c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
272d0 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65   sqlite3_blob_re
272e0 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  ad(IntPtr blob, 
272f0 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
27300 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
27310 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
27320 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
27330 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
27340 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27350 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27360 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27370 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
27380 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
27390 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
273a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
273b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
273c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
273d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
273e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
273f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
27400 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65  lite3_blob_reope
27410 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c  n(IntPtr blob, l
27420 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23  ong rowId);....#
27430 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27440 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27450 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27460 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27470 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27490 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
274a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
274b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
274c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
274d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
274e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
274f0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69  sqlite3_blob_wri
27500 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  te(IntPtr blob, 
27510 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
27520 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
27530 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
27540 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
27550 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
27560 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27570 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27580 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27590 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
275a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
275b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
275c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
275d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
275e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
275f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
27600 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
27610 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
27620 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
27630 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  ab(IntPtr db, In
27640 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23  tPtr zSQL);....#
27650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
276a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
276b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
276c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
276d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
276e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
276f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27700 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
27710 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f  printf(IntPtr fo
27720 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29  rmat, __arglist)
27730 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
27740 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
27750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27790 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  ////....    // S
277a0 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20  QLite API calls 
277b0 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65  that are provide
277c0 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e  d by "well-known
277d0 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61  " extensions tha
277e0 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61  t may be statica
277f0 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b  lly..    // link
27800 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69  ed with the SQLi
27810 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c  te core native l
27820 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79  ibrary currently
27830 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72   in use...    #r
27840 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20  egion extension 
27850 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
27860 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 76 69  ..    #region vi
27870 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 23 69 66  rtual table..#if
27880 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
27890 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
278a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
278b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
278c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
278d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
278e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
278f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27900 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27910 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27920 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
27930 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
27940 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
27950 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
27960 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
27970 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
27980 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c  tr name, ref sql
27990 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
279a0 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  le, IntPtr pClie
279b0 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79  ntData, xDestroy
279c0 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29  Module xDestroy)
279d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
279e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
279f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
27a00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
27a10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27a20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
27a30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
27a40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
27a50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
27a60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
27a70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
27a80 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
27a90 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
27aa0 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  e(IntPtr pModule
27ab0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
27ac0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
27ad0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27b20 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 65 73  .    #region ses
27b30 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 0d 0a  sion extension..
27b40 23 69 66 20 49 4e 54 45 52 4f 50 5f 53 45 53 53  #if INTEROP_SESS
27b50 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e 0d 0a 23  ION_EXTENSION..#
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 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27b90 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27ba0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27bb0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27bc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
27bd0 65 67 61 74 65 20 69 6e 74 20 78 53 65 73 73 69  egate int xSessi
27be0 6f 6e 46 69 6c 74 65 72 28 49 6e 74 50 74 72 20  onFilter(IntPtr 
27bf0 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
27c00 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  pTblName);....#i
27c10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27c20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27c30 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
27c40 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
27c50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
27c60 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
27c70 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
27c80 67 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67  gate SQLiteChang
27c90 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65 73 75  eSetConflictResu
27ca0 6c 74 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c  lt xSessionConfl
27cb0 69 63 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ict(IntPtr conte
27cc0 78 74 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  xt, SQLiteChange
27cd0 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 20  SetConflictType 
27ce0 74 79 70 65 2c 20 49 6e 74 50 74 72 20 69 74 65  type, IntPtr ite
27cf0 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  rator);....#if !
27d00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27d10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27d20 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
27d30 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
27d40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27d50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
27d60 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
27d70 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
27d80 65 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 28  e xSessionInput(
27d90 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
27da0 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 72 65  IntPtr pData, re
27db0 66 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d  f int nData);...
27dc0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27dd0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27de0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
27df0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
27e00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27e10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
27e20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64  ..    internal d
27e30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27e40 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e  rorCode xSession
27e50 4f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63 6f  Output(IntPtr co
27e60 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44  ntext, IntPtr pD
27e70 61 74 61 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b  ata, int nData);
27e80 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
27e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ed0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
27ee0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27ef0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
27f00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27f10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27f20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27f30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27f40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27f50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27f60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27f70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27f80 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27f90 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
27fa0 65 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 49 6e  ession_create(In
27fb0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
27fc0 64 62 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  dbName, ref IntP
27fd0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
27fe0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27ff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28010 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28020 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28030 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28040 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28050 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28060 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28070 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28080 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28090 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73   void sqlite3ses
280a0 73 69 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74 50  sion_delete(IntP
280b0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
280c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
280d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
280e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
280f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28100 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28110 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28120 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28140 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28150 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28160 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28170 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
28180 69 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50 74  ion_enable(IntPt
28190 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 65  r session, int e
281a0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
281b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
281c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
281d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
281e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
281f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
28200 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
28210 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
28220 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28230 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
28240 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
28250 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
28260 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
28270 6e 64 69 72 65 63 74 28 49 6e 74 50 74 72 20 73  ndirect(IntPtr s
28280 65 73 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64 69  ession, int indi
28290 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rect);....#if !P
282a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
282b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
282c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
282d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
282e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
282f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
28300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
28310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
28320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
28330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
28340 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
28350 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
28360 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63 68  e3session_attach
28370 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
28380 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 29   byte[] tblName)
28390 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
283a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
283b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
283c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
283d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
283e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
283f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28400 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28410 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28420 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28430 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28440 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
28450 65 33 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65 5f  e3session_table_
28460 66 69 6c 74 65 72 28 49 6e 74 50 74 72 20 73 65  filter(IntPtr se
28470 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 46  ssion, xSessionF
28480 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 49  ilter xFilter, I
28490 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
284a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
284b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
284c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
284d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
284e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
284f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28500 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28510 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28520 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
28530 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28540 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28550 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28560 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
28570 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28 49 6e 74  on_changeset(Int
28580 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66  Ptr session, ref
28590 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
285a0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 68 61   ref IntPtr pCha
285b0 6e 67 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20 21  ngeSet);...#if !
285c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
285d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
285e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
285f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
28600 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
28610 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
28620 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
28630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28640 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
28650 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
28660 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
28670 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
28680 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28  te3session_diff(
28690 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
286a0 62 79 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61 6d  byte[] fromDbNam
286b0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
286c0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72  e, ref IntPtr er
286d0 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rMsg);....#if !P
286e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
286f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
28700 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28710 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
28720 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
28730 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
28740 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
28750 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
28760 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
28770 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
28780 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
28790 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
287a0 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
287b0 65 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  et(IntPtr sessio
287c0 6e 2c 20 72 65 66 20 69 6e 74 20 6e 50 61 74 63  n, ref int nPatc
287d0 68 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72  hSet, ref IntPtr
287e0 20 70 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d 0a   pPatchSet);....
287f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28800 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28810 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28820 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28830 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28840 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28850 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28860 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28870 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28880 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28890 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
288a0 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
288b0 69 6f 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74 50  ion_isempty(IntP
288c0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
288d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
288e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
288f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28900 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28910 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28920 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28930 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28940 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28950 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28960 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28970 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28980 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28990 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
289a0 74 5f 73 74 61 72 74 28 72 65 66 20 49 6e 74 50  t_start(ref IntP
289b0 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
289c0 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74   nChangeSet, Int
289d0 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b  Ptr pChangeSet);
289e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
289f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28a00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28a20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28a30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28a40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28a50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28a60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28a70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28a80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28a90 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28aa0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28ab0 67 65 73 65 74 5f 73 74 61 72 74 5f 76 32 28 72  geset_start_v2(r
28ac0 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74  ef IntPtr iterat
28ad0 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53  or, int nChangeS
28ae0 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e  et, IntPtr pChan
28af0 67 65 53 65 74 2c 20 53 51 4c 69 74 65 43 68 61  geSet, SQLiteCha
28b00 6e 67 65 53 65 74 53 74 61 72 74 46 6c 61 67 73  ngeSetStartFlags
28b10 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 23 69 66 20   flags);....#if 
28b20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28b30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28b40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28b50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28b60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28b70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28b80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
28b90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28ba0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28bb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28bc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28bd0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28be0 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65  ite3changeset_ne
28bf0 78 74 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  xt(IntPtr iterat
28c00 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
28c10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28c20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28c30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28c40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28c50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28c60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28c70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28c80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28c90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28ca0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28cb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28cc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28cd0 63 68 61 6e 67 65 73 65 74 5f 6f 70 28 49 6e 74  changeset_op(Int
28ce0 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65  Ptr iterator, re
28cf0 66 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d  f IntPtr pTblNam
28d00 65 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75  e, ref int nColu
28d10 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69 74 65 41  mns, ref SQLiteA
28d20 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
28d30 6f 64 65 20 6f 70 2c 20 72 65 66 20 69 6e 74 20  ode op, ref int 
28d40 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23  bIndirect);....#
28d50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28d60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28d70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28d80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
28d90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28da0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28db0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
28dc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28dd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28de0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28df0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28e00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28e10 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
28e20 5f 70 6b 28 49 6e 74 50 74 72 20 69 74 65 72 61  _pk(IntPtr itera
28e30 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tor, ref IntPtr 
28e40 70 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 72 65  pPrimaryKeys, re
28e50 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29 3b  f int nColumns);
28e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28f10 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28f20 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28f30 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50 74 72  geset_old(IntPtr
28f40 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63   iterator, int c
28f50 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20  olumnIndex, ref 
28f60 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d  IntPtr pValue);.
28f70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28f80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28f90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
28fa0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
28fb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
28fc0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28fd0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28fe0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28ff0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
29000 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
29010 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
29020 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
29030 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
29040 65 73 65 74 5f 6e 65 77 28 49 6e 74 50 74 72 20  eset_new(IntPtr 
29050 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f  iterator, int co
29060 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49  lumnIndex, ref I
29070 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a  ntPtr pValue);..
29080 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
29090 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
290a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
290b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
290c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
290d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
290e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
290f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
29100 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
29110 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
29120 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
29130 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
29140 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
29150 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49 6e 74  set_conflict(Int
29160 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
29170 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72  t columnIndex, r
29180 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65  ef IntPtr pValue
29190 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
291a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
291b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
291c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
291d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
291e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
291f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
29200 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
29210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29220 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
29230 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29240 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
29250 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
29260 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c  angeset_fk_confl
29270 69 63 74 73 28 49 6e 74 50 74 72 20 69 74 65 72  icts(IntPtr iter
29280 61 74 6f 72 2c 20 72 65 66 20 69 6e 74 20 63 6f  ator, ref int co
29290 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23 69 66  nflicts);....#if
292a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
292b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
292c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
292d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
292e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
292f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29300 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29320 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29330 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29340 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29350 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29360 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66  lite3changeset_f
29370 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 69  inalize(IntPtr i
29380 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66  terator);....#if
29390 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
293a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
293b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
293c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
293d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
293e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
293f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29400 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29410 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29420 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29430 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29440 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29450 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69  lite3changeset_i
29460 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c 20 49  nvert(int nIn, I
29470 6e 74 50 74 72 20 70 49 6e 2c 20 72 65 66 20 69  ntPtr pIn, ref i
29480 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74  nt nOut, ref Int
29490 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
294a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
294b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
294c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
294d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
294e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
294f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
29500 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
29510 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29520 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
29530 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
29540 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
29550 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
29560 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
29570 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c 20 49  concat(int nA, I
29580 6e 74 50 74 72 20 70 41 2c 20 69 6e 74 20 6e 42  ntPtr pA, int nB
29590 2c 20 49 6e 74 50 74 72 20 70 42 2c 20 72 65 66  , IntPtr pB, ref
295a0 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49   int nOut, ref I
295b0 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
295c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
295d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
295e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
295f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
29600 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
29610 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29620 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
29630 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29640 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
29650 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
29660 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
29670 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29680 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
29690 6f 75 70 5f 6e 65 77 28 72 65 66 20 49 6e 74 50  oup_new(ref IntP
296a0 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b  tr changeGroup);
296b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
296c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
296d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
296e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
296f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29700 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
29710 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
29720 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
29730 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29740 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
29750 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29760 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29770 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
29780 67 65 67 72 6f 75 70 5f 61 64 64 28 49 6e 74 50  gegroup_add(IntP
29790 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
297a0 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74 50 74  int nData, IntPt
297b0 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66  r pData);....#if
297c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
297d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
297e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
297f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
29800 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
29810 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29820 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29830 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29840 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29850 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29860 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29870 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29880 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
29890 5f 6f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63  _output(IntPtr c
298a0 68 61 6e 67 65 47 72 6f 75 70 2c 20 72 65 66 20  hangeGroup, ref 
298b0 69 6e 74 20 6e 44 61 74 61 2c 20 72 65 66 20 49  int nData, ref I
298c0 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d  ntPtr pData);...
298d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
298e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
298f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29900 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
29910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
29920 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29930 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
29940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29960 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29970 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29980 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 63 68  n void sqlite3ch
29990 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65 74 65  angegroup_delete
299a0 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
299b0 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  oup);....#if !PL
299c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
299d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
299e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
299f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
29a00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
29a10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
29a20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
29a30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
29a40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
29a50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
29a60 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
29a70 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
29a80 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79  3changeset_apply
29a90 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
29aa0 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74 50  nChangeSet, IntP
29ab0 74 72 20 70 43 68 61 6e 67 65 53 65 74 2c 20 78  tr pChangeSet, x
29ac0 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46  SessionFilter xF
29ad0 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e 43  ilter, xSessionC
29ae0 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63  onflict xConflic
29af0 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  t, IntPtr contex
29b00 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
29b10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
29b20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
29b30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29b40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
29b50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
29b60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
29b70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
29b80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29b90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
29ba0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29bb0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
29bc0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
29bd0 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f 73  hangeset_apply_s
29be0 74 72 6d 28 49 6e 74 50 74 72 20 64 62 2c 20 78  trm(IntPtr db, x
29bf0 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
29c00 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c  put, IntPtr pIn,
29c10 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20   xSessionFilter 
29c20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f  xFilter, xSessio
29c30 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c  nConflict xConfl
29c40 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74  ict, IntPtr cont
29c50 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
29c60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
29c70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
29c80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29c90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
29ca0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
29cb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
29cc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
29cd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
29ce0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
29cf0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
29d00 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
29d10 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
29d20 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61  3changeset_conca
29d30 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49  t_strm(xSessionI
29d40 6e 70 75 74 20 78 49 6e 70 75 74 41 2c 20 49 6e  nput xInputA, In
29d50 74 50 74 72 20 70 49 6e 41 2c 20 78 53 65 73 73  tPtr pInA, xSess
29d60 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 42  ionInput xInputB
29d70 2c 20 49 6e 74 50 74 72 20 70 49 6e 42 2c 20 78  , IntPtr pInB, x
29d80 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
29d90 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
29da0 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
29db0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29dc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
29dd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29de0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
29df0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
29e00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
29e10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
29e20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29e30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
29e40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29e50 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
29e60 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
29e70 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74  changeset_invert
29e80 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e  _strm(xSessionIn
29e90 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50  put xInput, IntP
29ea0 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e  tr pIn, xSession
29eb0 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
29ec0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
29ed0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
29ee0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29ef0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29f00 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
29f10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
29f20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29f30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
29f40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29f50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29f60 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29f70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29f80 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29f90 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
29fa0 65 74 5f 73 74 61 72 74 5f 73 74 72 6d 28 72 65  et_start_strm(re
29fb0 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  f IntPtr iterato
29fc0 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  r, xSessionInput
29fd0 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20   xInput, IntPtr 
29fe0 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  pIn);....#if !PL
29ff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
2a010 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a020 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2a030 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2a040 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2a050 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
2a060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a070 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
2a080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2a090 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
2a0a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
2a0b0 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
2a0c0 5f 76 32 5f 73 74 72 6d 28 72 65 66 20 49 6e 74  _v2_strm(ref Int
2a0d0 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 78 53  Ptr iterator, xS
2a0e0 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
2a0f0 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20  ut, IntPtr pIn, 
2a100 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 53  SQLiteChangeSetS
2a110 74 61 72 74 46 6c 61 67 73 20 66 6c 61 67 73 29  tartFlags flags)
2a120 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
2a130 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2a140 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
2a150 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
2a160 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a170 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
2a180 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2a190 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
2a1a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2a1b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
2a1c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2a1d0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
2a1e0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
2a1f0 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 5f 73  sion_changeset_s
2a200 74 72 6d 28 49 6e 74 50 74 72 20 73 65 73 73 69  trm(IntPtr sessi
2a210 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70  on, xSessionOutp
2a220 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50  ut xOutput, IntP
2a230 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66  tr pOut);....#if
2a240 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2a250 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
2a270 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
2a280 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
2a290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a2a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
2a2b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2a2c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
2a2d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
2a2e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a2f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a300 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74  lite3session_pat
2a310 63 68 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74  chset_strm(IntPt
2a320 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
2a330 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
2a340 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
2a350 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2a360 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a370 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
2a380 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
2a390 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2a3a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
2a3b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2a3c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
2a3d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
2a3e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
2a3f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
2a400 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
2a410 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
2a420 67 65 67 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d  gegroup_add_strm
2a430 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
2a440 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70  oup, xSessionInp
2a450 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74  ut xInput, IntPt
2a460 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  r pIn);....#if !
2a470 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a480 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2a490 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
2a4a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
2a4b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
2a4c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a4d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
2a4e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2a4f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
2a500 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2a510 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
2a520 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
2a530 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f  te3changegroup_o
2a540 75 74 70 75 74 5f 73 74 72 6d 28 49 6e 74 50 74  utput_strm(IntPt
2a550 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 78  r changeGroup, x
2a560 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
2a570 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
2a580 75 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ut);..#endif..  
2a590 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
2a5a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a5b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a600 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
2a610 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70  qlite interop ap
2a620 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f  i calls (.NET Co
2a630 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
2a640 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46  only)..#if PLATF
2a650 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a660 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
2a670 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44  STANDARD..    [D
2a680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a690 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
2a6a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2a6b0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
2a6c0 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
2a6d0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
2a6e0 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  db, ref long row
2a6f0 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  Id);....    [Dll
2a700 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2a710 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2a720 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2a730 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d  void sqlite3_mem
2a740 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70  ory_used_interop
2a750 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29  (ref long bytes)
2a760 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
2a770 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
2a780 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2a790 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
2a7a0 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
2a7b0 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72  _highwater_inter
2a7c0 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  op(int resetFlag
2a7d0 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  , ref long bytes
2a7e0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
2a7f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2a800 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2a810 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a820 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a830 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
2a840 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
2a850 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
2a860 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
2a870 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
2a880 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2a890 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2a8a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2a8b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a8c0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
2a8d0 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
2a8e0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
2a8f0 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75  x, ref long valu
2a900 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
2a910 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
2a920 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
2a930 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
2a940 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20  64_interop")].. 
2a950 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2a960 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
2a970 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
2a980 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e  3_bind_uint64_in
2a990 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
2a9a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
2a9b0 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  f ulong value);.
2a9c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
2a9d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
2a9e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2a9f0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
2aa00 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
2aa10 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
2aa20 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
2aa30 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
2aa40 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
2aa50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2aa60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2aa70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2aa80 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
2aa90 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
2aaa0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
2aab0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
2aac0 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
2aad0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
2aae0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
2aaf0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2ab00 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
2ab10 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
2ab20 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
2ab30 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65  tr p, ref double
2ab40 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
2ab50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2ab60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2ab70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2ab80 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
2ab90 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74  _value_int64_int
2aba0 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
2abb0 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
2abc0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
2abd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
2abe0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2abf0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
2ac00 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
2ac10 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
2ac20 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
2ac30 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
2ac40 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
2ac50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
2ac60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2ac70 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
2ac80 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
2ac90 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
2aca0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
2acb0 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
2acc0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
2acd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
2ace0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2acf0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
2ad00 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 5f 69   sqlite3_msize_i
2ad10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
2ad20 20 72 65 66 20 75 6c 6f 6e 67 20 73 69 7a 65 29   ref ulong size)
2ad30 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
2ad40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
2ad50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2ad60 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
2ad70 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
2ad80 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
2ad90 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20  dule_interop(.. 
2ada0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
2adb0 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49  , IntPtr name, I
2adc0 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69  ntPtr pModule, i
2add0 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72  nt iVersion, xCr
2ade0 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20  eate xCreate,.. 
2adf0 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20         xConnect 
2ae00 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49  xConnect, xBestI
2ae10 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c  ndex xBestIndex,
2ae20 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
2ae30 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20  sconnect,..     
2ae40 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73     xDestroy xDes
2ae50 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65  troy, xOpen xOpe
2ae60 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  n, xClose xClose
2ae70 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  , xFilter xFilte
2ae80 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78  r,..        xNex
2ae90 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45  t xNext, xEof xE
2aea0 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  of, xColumn xCol
2aeb0 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77  umn, xRowId xRow
2aec0 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64  Id, xUpdate xUpd
2aed0 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42  ate,..        xB
2aee0 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79  egin xBegin, xSy
2aef0 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69  nc xSync, xCommi
2af00 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c  t xCommit, xRoll
2af10 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d  back xRollback,.
2af20 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75  .        xFindFu
2af30 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
2af40 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52  tion, xRename xR
2af50 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e  ename, xSavepoin
2af60 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20  t xSavepoint,.. 
2af70 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20         xRelease 
2af80 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62  xRelease, xRollb
2af90 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
2afa0 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  o, IntPtr pClien
2afb0 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  tData,..        
2afc0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
2afd0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  DestroyModule);.
2afe0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
2aff0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b000 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
2b010 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
2b020 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2b030 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b080 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
2b090 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73  Native Delegates
2b0a0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
2b0b0 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
2b0c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2b0d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b0e0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
2b0f0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
2b100 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2b110 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
2b120 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
2b130 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2b140 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
2b150 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
2b160 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b170 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
2b180 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
2b190 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
2b1a0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
2b1b0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2b1c0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
2b1d0 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
2b1e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b230 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2b240 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2b250 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2b260 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2b270 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2b280 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2b290 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2b2a0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2b2b0 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
2b2c0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2b2d0 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
2b2e0 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
2b2f0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2b300 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b310 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
2b320 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
2b330 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
2b340 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
2b350 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2b3b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2b3c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2b3d0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2b3e0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2b3f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2b400 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2b410 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2b420 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2b430 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2b440 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2b450 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2b460 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b  r pIndex..    );
2b470 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2b4d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b4e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2b4f0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2b500 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2b510 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2b520 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2b530 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2b540 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
2b550 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
2b560 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
2b570 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
2b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2b5d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2b5e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b5f0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
2b600 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
2b610 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2b620 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
2b630 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
2b640 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2b650 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
2b660 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2b670 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
2b680 20 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 2f 2f 2f 2f  ////////////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b6d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2b6e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b6f0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2b700 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2b710 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2b720 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2b730 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2b740 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
2b750 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
2b760 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2b770 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
2b780 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
2b790 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2b7f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2b800 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b810 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
2b820 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
2b830 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2b840 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
2b850 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
2b860 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2b870 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
2b880 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2b890 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
2b8a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b8f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2b900 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b910 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2b920 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2b930 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2b940 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2b950 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2b960 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
2b970 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
2b980 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2b990 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
2b9a0 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
2b9b0 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
2b9c0 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  tr,..        int
2b9d0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
2b9e0 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
2b9f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2ba50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2ba60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2ba70 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2ba80 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2ba90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2baa0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2bab0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2bac0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2bad0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49  Next(..        I
2bae0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
2baf0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2bb50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2bb60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2bb70 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2bb80 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2bb90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2bba0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2bbb0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2bbc0 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
2bbd0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2bbe0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
2bbf0 20 20 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 2f 2f 2f 2f 0d 0a 0d  /////////////...
2bc40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2bc50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2bc60 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2bc70 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2bc80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2bc90 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2bca0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2bcb0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2bcc0 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
2bcd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2bce0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
2bcf0 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
2bd00 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
2bd10 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
2bd20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2bd70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2bd80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2bd90 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2bda0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2bdb0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2bdc0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2bdd0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2bde0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2bdf0 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
2be00 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2be10 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
2be20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
2be30 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2be90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2bea0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2beb0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2bec0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2bed0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2bee0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2bef0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2bf00 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2bf10 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
2bf20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2bf30 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2bf40 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
2bf50 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
2bf60 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
2bf70 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
2bf80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2bfd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2bfe0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2bff0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2c000 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2c010 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2c020 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2c030 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2c040 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2c050 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
2c060 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2c070 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
2c080 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2c0e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2c0f0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2c100 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2c110 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2c120 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2c130 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2c140 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2c150 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
2c160 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2c170 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
2c180 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2c1e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2c1f0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2c200 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2c210 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2c220 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2c230 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2c240 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2c250 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
2c260 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2c270 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
2c280 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2d0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2c2e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c2f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2c300 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2c310 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2c320 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2c330 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2c340 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2c350 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
2c360 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49  back(..        I
2c370 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2c380 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2c3e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c3f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2c400 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2c410 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2c420 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2c430 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2c440 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
2c450 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
2c460 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2c470 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2c480 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
2c490 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
2c4a0 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
2c4b0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
2c4c0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2c4d0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73    ref IntPtr pUs
2c4e0 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a  erData..    );..
2c4f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c540 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2c550 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2c560 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2c570 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2c580 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2c590 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2c5a0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2c5b0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2c5c0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
2c5d0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
2c5e0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2c5f0 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
2c600 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
2c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2c660 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2c670 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2c680 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
2c690 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
2c6a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2c6b0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
2c6c0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
2c6d0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2c6e0 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
2c6f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2c700 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
2c710 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
2c720 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2c780 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2c790 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2c7a0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2c7b0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2c7c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2c7d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2c7e0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2c7f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2c800 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
2c810 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2c820 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
2c830 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
2c840 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c890 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2c8a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c8b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2c8c0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2c8d0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2c8e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2c8f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2c900 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2c910 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
2c920 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
2c930 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2c940 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
2c950 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
2c960 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
2c9b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2c9c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c9d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2c9e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2c9f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2ca00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2ca10 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2ca20 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  c delegate void 
2ca30 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49  xDestroyModule(I
2ca40 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
2ca50 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  a);..#endif..   
2ca60 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2ca70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cac0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
2cad0 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d  tive Structures.
2cae0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
2caf0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
2cb00 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
2cb10 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
2cb20 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
2cb30 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
2cb40 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  e3_module..    {
2cb50 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 20 30  ..        /*   0
2cb60 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
2cb70 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
2cb80 20 20 2f 2a 20 20 20 38 20 2a 2f 20 70 75 62 6c    /*   8 */ publ
2cb90 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61  ic xCreate xCrea
2cba0 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  te;..        /* 
2cbb0 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   16 */ public xC
2cbc0 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b  onnect xConnect;
2cbd0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 32 34  ..        /*  24
2cbe0 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65 73 74   */ public xBest
2cbf0 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
2cc00 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 33  ;..        /*  3
2cc10 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 44 69 73  2 */ public xDis
2cc20 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
2cc30 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ect;..        /*
2cc40 20 20 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 78    40 */ public x
2cc50 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
2cc60 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34  ;..        /*  4
2cc70 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 4f 70 65  8 */ public xOpe
2cc80 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20  n xOpen;..      
2cc90 20 20 2f 2a 20 20 35 36 20 2a 2f 20 70 75 62 6c    /*  56 */ publ
2cca0 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  ic xClose xClose
2ccb0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 36  ;..        /*  6
2ccc0 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6c  4 */ public xFil
2ccd0 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20  ter xFilter;..  
2cce0 20 20 20 20 20 20 2f 2a 20 20 37 32 20 2a 2f 20        /*  72 */ 
2ccf0 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65  public xNext xNe
2cd00 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  xt;..        /* 
2cd10 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 45   80 */ public xE
2cd20 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20  of xEof;..      
2cd30 20 20 2f 2a 20 20 38 38 20 2a 2f 20 70 75 62 6c    /*  88 */ publ
2cd40 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75  ic xColumn xColu
2cd50 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  mn;..        /* 
2cd60 20 39 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52   96 */ public xR
2cd70 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20  owId xRowId;..  
2cd80 20 20 20 20 20 20 2f 2a 20 31 30 34 20 2a 2f 20        /* 104 */ 
2cd90 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
2cda0 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
2cdb0 20 2f 2a 20 31 31 32 20 2a 2f 20 70 75 62 6c 69   /* 112 */ publi
2cdc0 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b  c xBegin xBegin;
2cdd0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 32 30  ..        /* 120
2cde0 20 2a 2f 20 70 75 62 6c 69 63 20 78 53 79 6e 63   */ public xSync
2cdf0 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20   xSync;..       
2ce00 20 2f 2a 20 31 32 38 20 2a 2f 20 70 75 62 6c 69   /* 128 */ publi
2ce10 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69  c xCommit xCommi
2ce20 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  t;..        /* 1
2ce30 33 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f  36 */ public xRo
2ce40 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b  llback xRollback
2ce50 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 34  ;..        /* 14
2ce60 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6e  4 */ public xFin
2ce70 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
2ce80 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  unction;..      
2ce90 20 20 2f 2a 20 31 35 32 20 2a 2f 20 70 75 62 6c    /* 152 */ publ
2cea0 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61  ic xRename xRena
2ceb0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  me;..        /* 
2cec0 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76  The methods abov
2ced0 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e  e are in version
2cee0 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65   1 of the sqlite
2cef0 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  3_module..      
2cf00 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68     * object.  Th
2cf10 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f  ose below are fo
2cf20 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20  r version 2 and 
2cf30 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20  greater. */..   
2cf40 20 20 20 20 20 2f 2a 20 31 36 30 20 2a 2f 20 70       /* 160 */ p
2cf50 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74  ublic xSavepoint
2cf60 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20   xSavepoint;..  
2cf70 20 20 20 20 20 20 2f 2a 20 31 36 38 20 2a 2f 20        /* 168 */ 
2cf80 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
2cf90 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
2cfa0 20 20 20 2f 2a 20 31 37 36 20 2a 2f 20 70 75 62     /* 176 */ pub
2cfb0 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  lic xRollbackTo 
2cfc0 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20  xRollbackTo;..  
2cfd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
2cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d020 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
2d030 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
2d040 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
2d050 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
2d060 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
2d070 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20  _vtab..    {..  
2d080 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70        /*  0 */ p
2d090 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f  ublic IntPtr pMo
2d0a0 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  dule;..        /
2d0b0 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69  *  8 */ public i
2d0c0 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c  nt nRef; /* NO L
2d0d0 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20  ONGER USED */.. 
2d0e0 20 20 20 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20         /* 16 */ 
2d0f0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45  public IntPtr zE
2d100 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rrMsg;..    }...
2d110 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2d120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d160 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
2d170 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
2d180 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
2d190 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
2d1a0 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
2d1b0 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20  cursor..    {.. 
2d1c0 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70         /* 0 */ p
2d1d0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
2d1e0 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
2d1f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d240 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
2d250 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
2d260 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
2d270 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
2d280 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
2d290 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
2d2a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2d2b0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
2d2c0 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
2d2d0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
2d2e0 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
2d2f0 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
2d300 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2d310 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
2d320 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d330 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
2d340 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
2d350 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
2d370 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
2d380 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
2d390 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
2d3a0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
2d3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d3c0 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
2d3d0 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
2d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
2d3f0 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
2d400 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
2d410 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
2d420 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2d430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30  ....        /* 0
2d490 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
2d4a0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
2d4b0 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20   /* 4 */ public 
2d4c0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
2d4d0 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
2d4e0 20 20 20 20 20 2f 2a 20 35 20 2a 2f 20 70 75 62       /* 5 */ pub
2d4f0 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
2d500 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 20 2a  ..        /* 8 *
2d510 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65  / public int iTe
2d520 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
2d530 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d580 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
2d590 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
2d5a0 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
2d5b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2d5c0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
2d5d0 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
2d5e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
2d5f0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
2d600 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
2d610 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
2d620 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
2d630 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
2d640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2d650 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2d660 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2d670 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
2d680 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2d690 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d6a0 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
2d6b0 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
2d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6d0 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
2d6e0 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
2d6f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d750 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  /....        /* 
2d760 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  0 */ public int 
2d770 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
2d780 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
2d790 20 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75        /* 4 */ pu
2d7a0 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
2d7b0 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
2d7c0 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
2d7d0 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
2d7e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d830 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
2d840 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
2d850 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
2d860 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
2d870 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
2d880 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
2d890 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
2d8a0 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
2d8b0 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
2d8c0 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
2d8d0 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
2d8e0 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
2d8f0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
2d900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2d910 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
2d920 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
2d930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2d940 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
2d950 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
2d960 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d970 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
2d980 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
2d990 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
2d9a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2d9b0 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
2d9c0 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
2d9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d9e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d9f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2da40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2da50 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
2da60 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
2da70 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
2da80 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
2da90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2daa0 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
2dab0 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
2dac0 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
2dad0 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
2dae0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
2daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
2db40 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
2db50 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
2db60 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
2db70 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
2db80 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
2db90 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
2dba0 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
2dbb0 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69    /*  0 */ publi
2dbc0 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  c int nConstrain
2dbd0 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20  t; /* Number of 
2dbe0 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73  entries in aCons
2dbf0 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20  traint */..     
2dc00 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c     /*  8 */ publ
2dc10 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
2dc20 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  raint;..        
2dc30 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20  /* 16 */ public 
2dc40 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20  int nOrderBy;   
2dc50 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
2dc60 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42  tries in aOrderB
2dc70 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  y */..        /*
2dc80 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e   24 */ public In
2dc90 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a  tPtr aOrderBy;..
2dca0 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75          /* Outpu
2dcb0 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ts */..        /
2dcc0 2a 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 49  * 32 */ public I
2dcd0 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
2dce0 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20  tUsage;..       
2dcf0 20 2f 2a 20 34 30 20 2a 2f 20 70 75 62 6c 69 63   /* 40 */ public
2dd00 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20   int idxNum;    
2dd10 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72         /* Number
2dd20 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66   used to identif
2dd30 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a  y the index */..
2dd40 20 20 20 20 20 20 20 20 2f 2a 20 34 38 20 2a 2f          /* 48 */
2dd50 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69   public string i
2dd60 64 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a  dxStr;        /*
2dd70 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c   String, possibl
2dd80 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
2dd90 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a  sqlite3_malloc *
2dda0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 36  /..        /* 56
2ddb0 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
2ddc0 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
2ddd0 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
2dde0 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
2ddf0 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
2de00 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 30 20 2a  .        /* 60 *
2de10 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64  / public int ord
2de20 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f  erByConsumed;  /
2de30 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
2de40 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
2de50 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
2de60 2f 2a 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20  /* 64 */ public 
2de70 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64  double estimated
2de80 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74  Cost; /* Estimat
2de90 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67  ed cost of using
2dea0 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a   this index */..
2deb0 20 20 20 20 20 20 20 20 2f 2a 20 37 32 20 2a 2f          /* 72 */
2dec0 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
2ded0 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
2dee0 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
2def0 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
2df00 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ed */..        /
2df10 2a 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 53  * 80 */ public S
2df20 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
2df30 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73  idxFlags; /* Mas
2df40 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45  k of SQLITE_INDE
2df50 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a  X_SCAN_* flags *
2df60 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 38  /..        /* 88
2df70 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20   */ public long 
2df80 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20  colUsed;        
2df90 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20   /* Input: Mask 
2dfa0 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20  of columns used 
2dfb0 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d  by statement */.
2dfc0 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
2dfd0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2dfe0 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
2dff0 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
2e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e040 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
2e050 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  n .NET Compact F
2e060 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20  ramework (only) 
2e070 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43  CriticalHandle C
2e080 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f  lass..#if PLATFO
2e090 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2e0a0 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
2e0b0 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
2e0c0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
2e0d0 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
2e0e0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
2e0f0 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
2e100 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
2e110 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
2e120 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
2e130 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
2e140 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
2e150 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
2e160 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
2e170 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
2e180 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
2e190 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
2e1a0 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
2e1b0 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
2e1c0 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
2e1d0 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
2e1e0 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
2e1f0 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
2e200 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
2e210 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
2e220 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
2e230 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
2e240 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
2e250 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
2e260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e270 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
2e280 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
2e290 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
2e2a0 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
2e2b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
2e2c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
2e2d0 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
2e2e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
2e2f0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
2e300 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
2e310 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
2e320 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2e330 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
2e340 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
2e350 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
2e360 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
2e370 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
2e380 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
2e390 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
2e3a0 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
2e3b0 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
2e3c0 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
2e3d0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
2e3e0 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
2e3f0 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
2e400 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
2e410 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
2e420 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
2e430 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
2e440 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
2e450 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
2e460 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
2e470 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
2e480 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
2e490 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
2e4a0 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
2e4b0 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
2e4c0 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
2e4d0 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2e4e0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
2e4f0 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
2e500 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
2e510 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
2e520 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
2e530 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
2e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e590 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2e5a0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2e5b0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
2e5c0 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
2e5d0 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
2e5e0 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
2e5f0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
2e600 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
2e610 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
2e620 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2e630 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
2e640 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
2e650 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
2e660 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
2e670 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
2e680 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2e690 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2e6a0 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
2e6b0 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
2e6c0 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
2e6d0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2e6e0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2e6f0 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
2e700 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
2e710 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
2e720 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
2e730 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
2e740 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
2e750 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2e760 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2e770 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2e780 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2e7d0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2e7e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2e7f0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2e800 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
2e810 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
2e820 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
2e830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2e890 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
2e8a0 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
2e8b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e900 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
2e910 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
2e920 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
2e930 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2e940 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
2e950 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2e960 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
2e970 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2e980 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2e990 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2e9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2e9b0 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
2e9c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2e9d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9f0 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
2ea00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2ea10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2ea20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2ea30 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
2ea40 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
2ea50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaa0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
2eab0 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
2eac0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
2ead0 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
2eae0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
2eaf0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
2eb00 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2eb10 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2eb20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2eb30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2eb40 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2eb50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2eb60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2eb70 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
2eb80 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
2eb90 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
2eba0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
2ebb0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
2ebc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2ebd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ebe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2ec30 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
2ec40 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
2ec50 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
2ec60 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
2ec70 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2ec80 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
2ec90 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2eca0 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
2ecb0 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
2ecc0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2ecd0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
2ece0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
2ecf0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
2ed00 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2ed10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ed20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2ed70 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
2ed80 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
2ed90 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
2eda0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2edb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2edc0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2edd0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2ede0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2edf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ee00 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
2ee10 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
2ee20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ee30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
2ee40 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2ee50 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
2ee60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2ee70 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2ee80 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
2ee90 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
2eea0 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eec0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
2eed0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
2eee0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
2eef0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2ef00 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2ef10 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2ef20 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2ef30 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
2ef40 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2ef50 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
2ef60 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2ef70 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
2ef80 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2ef90 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2efa0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2efb0 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
2efc0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
2efd0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
2efe0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
2eff0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2f000 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2f010 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2f020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2f030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f040 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2f050 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2f060 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2f070 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f080 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2f090 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2f0a0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0c0 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
2f0d0 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
2f0e0 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
2f0f0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2f100 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2f110 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f140 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
2f150 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2f160 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2f170 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
2f180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f190 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
2f1a0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2f1b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2f1c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1e0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2f1f0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2f200 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
2f210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f220 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2f230 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
2f240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f250 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f260 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2f270 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
2f280 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2f290 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2f2a0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
2f2b0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
2f2c0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
2f2d0 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
2f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2f0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2f300 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2f310 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
2f320 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2f330 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2f340 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2f350 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
2f360 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2f370 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
2f380 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
2f390 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2f3a0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
2f3b0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2f3c0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2f3d0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2f3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f400 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2f410 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2f420 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2f430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f440 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2f450 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2f460 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2f480 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
2f490 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2f4a0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2f4d0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2f4e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2f500 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2f510 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f520 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2f530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f540 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2f550 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2f560 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2f570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2f580 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2f590 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2f5a0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2f5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5d0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2f5e0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2f5f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2f600 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2f610 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2f620 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2f630 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2f640 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2f650 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2f660 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f670 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2f6c0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2f6d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2f6e0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2f6f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2f700 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f710 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2f720 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2f730 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ata.connectionCo
2f740 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
2f750 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2f760 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f7b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
2f7c0 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
2f7d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f7e0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2f7f0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2f800 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2f810 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2f820 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2f830 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2f840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f860 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
2f870 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
2f880 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2f890 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f8a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f8b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f900 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2f910 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
2f920 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
2f930 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
2f940 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2f950 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2f960 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2f970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2f980 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2f990 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2f9a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2f9c0 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
2f9d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2fa00 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2fa10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2fa60 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2fa70 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2fa80 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
2fa90 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
2faa0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2fab0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2fac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2fad0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2fae0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2faf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2fb00 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
2fb10 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
2fb20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2fb30 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2fb40 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
2fb50 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
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 2f 2f 2f  ////////////////
2fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2fbb0 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
2fbc0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2fbd0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
2fbe0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
2fbf0 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
2fc00 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
2fc10 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
2fc20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
2fc30 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
2fc40 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
2fc50 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2fc60 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
2fc70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2fc80 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2fc90 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
2fca0 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2fcb0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2fcc0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2fcd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2fd20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2fd30 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2fd40 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
2fd50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2fda0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2fdb0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2fdc0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2fdd0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
2fde0 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
2fdf0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2fe00 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
2fe10 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2fe20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2fe30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2fe40 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2fe50 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
2fe60 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2fe70 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2fe80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2fe90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2fea0 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
2feb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2fec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2fed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2fee0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2fef0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2ff00 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ff50 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2ff60 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
2ff70 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
2ff80 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
2ff90 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
2ffa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2ffb0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2ffc0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2ffd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2ffe0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2fff0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
30000 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
30010 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30020 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
30030 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
30040 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
30050 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
30060 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30070 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
300a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
300d0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
300e0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
300f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
30100 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
30110 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
30120 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
30130 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
30140 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
30150 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
30160 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
30170 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
30180 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
30190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
301e0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
301f0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
30200 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
30210 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30220 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
30230 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
30240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
30250 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
30260 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
30270 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
30280 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
30290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
302a0 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
302b0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
302c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
302d0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
302e0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
302f0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
30300 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
30310 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
30320 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
30330 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
30340 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
30350 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
30360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30370 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
30380 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30390 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
303a0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
303b0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
303c0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
303d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303e0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
303f0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30410 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
30420 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20  tatement: {0}", 
30430 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
30440 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
30450 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
30470 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
30480 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30490 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
304a0 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
304b0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
304c0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
304d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
304e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304f0 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
30500 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
30510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30520 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
30540 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
30550 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
30560 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
30590 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
305a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
305b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
305c0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
305d0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
305e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
305f0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
30600 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
30610 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
30620 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
30630 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
30640 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
30650 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
30660 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
30670 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
30680 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
30690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
306a0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
306b0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
306c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
306d0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
306e0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
306f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
30700 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
30710 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
30720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30730 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
30740 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30750 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
30760 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
30770 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
30780 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307a0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
307b0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
307e0 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
307f0 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
30800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30810 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
30820 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
30830 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
30840 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30850 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
30860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
30870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30880 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
30890 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
308a0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
308b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
308c0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
308d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
308f0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
30900 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
30910 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
30930 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
30940 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
30950 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30960 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
30970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
30980 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
30990 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
309a0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
309b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
309c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
309d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a10 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
30a20 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
30a30 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
30a40 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
30a50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30a60 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
30a70 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
30a80 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
30a90 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
30aa0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
30ab0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
30ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30b10 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
30b20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
30b30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30b40 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
30b50 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
30b60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
30b70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
30b80 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
30b90 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
30ba0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
30bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30bc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30bd0 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
30be0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
30bf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30c00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30c10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
30c70 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
30c80 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
30c90 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
30ca0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
30cb0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
30cc0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
30cd0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
30ce0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
30cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30d10 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
30d20 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
30d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30d40 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
30d50 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
30d60 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
30d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30db0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
30dc0 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
30dd0 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
30de0 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
30df0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
30e00 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
30e10 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
30e20 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
30e30 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
30e40 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
30e50 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
30e60 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
30e70 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
30e80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
30e90 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
30ea0 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
30eb0 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
30ec0 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
30ed0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
30ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30f30 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
30f40 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
30f50 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
30f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fa0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30fb0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
30fc0 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
30fd0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
30fe0 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
30ff0 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
31000 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31010 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
31020 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31030 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
31040 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
31050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
31060 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
31070 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
31080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
310a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
310b0 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
310c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
310d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
310e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
310f0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
31100 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31110 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31160 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
31170 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
31180 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
31190 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
311a0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
311b0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
311c0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
311d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
311e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
311f0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
31200 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
31210 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
31220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31230 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
31240 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
31250 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
31260 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
31270 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31280 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
31290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
312e0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
312f0 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
31300 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
31310 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
31320 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
31330 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
31340 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
31350 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
31360 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
31370 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
31380 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
31390 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
313a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
313e0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
313f0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
31400 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
31410 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
31420 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
31430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
31440 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
31450 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
31460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
31470 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
31480 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
31490 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
314a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
314b0 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
314c0 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
314d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
314e0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
314f0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
31500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31510 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
31520 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
31530 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
31540 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
31550 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
31560 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
31570 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
31580 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315a0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
315b0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
315c0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
315d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315e0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
315f0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
31600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31610 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
31620 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c  hBackup: {0}", l
31630 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
31640 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
31650 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
31670 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
31680 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31690 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
316a0 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
316b0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
316c0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
316d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
316e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316f0 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
31700 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
31710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31720 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31730 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
31740 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
31750 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ckup(cnn, handle
31760 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31770 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
31780 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
31790 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
317a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
317b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
317c0 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
317d0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
317e0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
317f0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
31800 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
31810 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
31820 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
31830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
31840 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
31850 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
31860 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
31870 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
31880 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
31890 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
318a0 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
318b0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
318c0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
318d0 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
318e0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
318f0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
31900 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
31910 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
31920 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
31930 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31950 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
31960 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
31970 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
31980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31990 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
319a0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
319b0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
319d0 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
319e0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
319f0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
31a00 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
31a10 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
31a20 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
31a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31a40 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
31a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31a70 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
31a80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31a90 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
31aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31ab0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
31ac0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
31ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ae0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
31af0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31b00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
31b30 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
31b40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31b50 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
31b60 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
31b70 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
31b80 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
31b90 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
31ba0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
31bb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
31bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c00 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
31c10 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
31c20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
31c30 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
31c40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31c50 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
31c60 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
31c70 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
31c80 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
31c90 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
31ca0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
31cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
31d00 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
31d10 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
31d20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31d30 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
31d40 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
31d50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
31d60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
31d70 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
31d80 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
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 20 20 20 20 72 65 74 75 72 6e 20           return 
31dc0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
31dd0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
31de0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31df0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31e00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31e10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31e60 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
31e70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
31e80 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
31e90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
31ea0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
31eb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
31ec0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
31ed0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
31ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f00 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
31f10 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
31f20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31f30 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
31f40 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
31f50 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
31f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
31fb0 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48  gion SQLiteBlobH
31fc0 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
31fd0 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
31fe0 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
31ff0 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
32000 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65  SQLite blob obje
32010 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
32020 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
32030 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
32040 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
32050 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
32060 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
32070 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
32080 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
32090 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
320a0 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
320b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
320c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
320d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
32110 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
32120 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
32130 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
32140 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32190 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
321a0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
321b0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
321c0 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  r(SQLiteBlobHand
321d0 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  le blob)..      
321e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
321f0 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c   if (blob != nul
32200 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
32210 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
32220 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
32230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32240 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e    lock (blob.syn
32250 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
32260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32270 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32280 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c         return bl
32290 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ob.handle;..    
322a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
322b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
322c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
322d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
322e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
322f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
32340 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
32350 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
32360 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
32370 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
32380 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  Ptr blob)..     
32390 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
323a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
323b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
323c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
323d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
323e0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
323f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
32410 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
32420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32430 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b  SetHandle(blob);
32440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32450 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
32460 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
32470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
324b0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
324c0 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
324d0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
324e0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
324f0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
32500 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
32510 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
32520 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
32530 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
32540 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
32550 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
32560 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
32570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
325c0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
325d0 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
325e0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
325f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32600 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
32610 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
32620 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
32630 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
32640 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
32650 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
32660 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
32670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32680 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
32690 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
326a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
326b0 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
326c0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
326d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
326e0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
326f0 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20  .CloseBlob(cnn, 
32700 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
32710 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
32720 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
32730 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
32740 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
32750 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32770 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
32780 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
32790 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
327a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327b0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
327c0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
327d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
327e0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
327f0 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f  seBlob: {0}", lo
32800 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
32810 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
32820 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
32830 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
32840 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
32850 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32860 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
32870 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
32880 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
32890 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
328a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
328b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
328c0 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
328d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
328e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
328f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32900 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
32910 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
32920 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
32930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32940 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
32950 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
32960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32970 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32980 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
32990 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
329a0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
329b0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
329c0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
329d0 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
329e0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
329f0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
32a00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32a10 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
32a20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
32a30 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
32a40 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
32a50 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
32a60 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
32a70 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
32a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
32a90 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
32aa0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
32ab0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
32ac0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
32ad0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
32ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32af0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
32b00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
32b20 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
32b30 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
32b40 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
32b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b60 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
32b70 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
32b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b90 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
32ba0 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  ob: {0}, excepti
32bb0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
32bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bd0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
32be0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
32bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c10 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
32c20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32c30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
32c40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
32c50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32c60 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
32c70 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
32c80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
32c90 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
32ca0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
32cb0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
32cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32cd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32ce0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
32cf0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
32d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32d20 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
32d30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
32d40 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
32d50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32d60 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
32d70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
32d80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
32d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
32dd0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
32de0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
32df0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
32e00 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
32e10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32e20 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
32e30 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
32e40 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
32e50 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
32e60 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
32e70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32eb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32ec0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
32ed0 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
32ee0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
32ef0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
32f00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
32f10 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
32f20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
32f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
32f40 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
32f50 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
32f60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
32f80 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
32f90 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
32fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
32fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32fc0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
32fd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
32fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33020 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
33030 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
33040 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
33050 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
33060 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
33070 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
33080 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
33090 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
330a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
330b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
330c0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
330d0 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
330e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
330f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
33100 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
33110 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..