System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 74a01a66ba14435d66d9476cb76e1619b5001620:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 54 52 41  tion;....#if TRA
0180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 20 7c 7c 20  CE_DETECTION || 
0190: 54 52 41 43 45 5f 53 48 41 52 45 44 20 7c 7c 20  TRACE_SHARED || 
01a0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c 7c  TRACE_PRELOAD ||
01b0: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
01c0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69   using System.Di
01d0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e 64  agnostics;..#end
01e0: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
01f0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
0200: 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69  .Generic;..  usi
0210: 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20  ng System.IO;.. 
0220: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65   using System.Re
0230: 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  flection;....#if
0240: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0250: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0260: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0270: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02a0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02b0: 28 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34  (NET_40 || NET_4
02c0: 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
02d0: 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
02e0: 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
02f0: 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
0300: 37 20 7c 7c 20 4e 45 54 5f 34 37 31 20 7c 7c 20  7 || NET_471 || 
0310: 4e 45 54 5f 34 37 32 29 20 26 26 20 21 50 4c 41  NET_472) && !PLA
0320: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0330: 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69 6e 67 20  MEWORK..  using 
0340: 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 56  System.Runtime.V
0350: 65 72 73 69 6f 6e 69 6e 67 3b 0d 0a 23 65 6e 64  ersioning;..#end
0360: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
0370: 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 23 69  stem.Text;....#i
0380: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
0390: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20  ACTFRAMEWORK || 
03a0: 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
03b0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72  using System.Thr
03c0: 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d  eading;..#endif.
03d0: 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  ...  using Syste
03e0: 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67  m.Xml;....  #reg
03f0: 69 6f 6e 20 44 65 62 75 67 20 44 61 74 61 20 53  ion Debug Data S
0400: 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 23 69 66  tatic Class..#if
0410: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c   COUNT_HANDLE ||
0420: 20 44 45 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73   DEBUG..  /// <s
0430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
0440: 68 69 73 20 63 6c 61 73 73 20 65 6e 63 61 70 73  his class encaps
0450: 75 6c 61 74 65 73 20 73 6f 6d 65 20 74 72 61 63  ulates some trac
0460: 6b 69 6e 67 20 64 61 74 61 20 74 68 61 74 20 69  king data that i
0470: 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  s used for debug
0480: 67 69 6e 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20  ging..  /// and 
0490: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
04a0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
04b0: 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ry>..  internal 
04c0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 44 65 62  static class Deb
04d0: 75 67 44 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20  ugData..  {..   
04e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
04f0: 74 65 20 44 61 74 61 0d 0a 23 69 66 20 44 45 42  te Data..#if DEB
0500: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0510: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0520: 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20  // This lock is 
0530: 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20  used to protect 
0540: 73 65 76 65 72 61 6c 20 73 74 61 74 69 63 20 66  several static f
0550: 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ields...      //
0560: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0570: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0580: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  ic readonly obje
0590: 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  ct staticSyncRoo
05a0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
05b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
05c0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
0610: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72        #region Cr
0620: 69 74 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f  itical Handle Co
0630: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0640: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55  d Only)..#if COU
0650: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
0660: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
0670: 54 45 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73  TE: These counts
0680: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 74   represent the t
0690: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
06a0: 75 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20  utstanding..    
06b0: 20 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d    //       (non-
06c0: 64 69 73 70 6f 73 65 64 29 20 43 72 69 74 69 63  disposed) Critic
06d0: 61 6c 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64  alHandle derived
06e0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
06f0: 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  s..      //     
0700: 20 20 63 72 65 61 74 65 64 20 62 79 20 74 68 69    created by thi
0710: 73 20 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72  s library and ar
0720: 65 20 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20  e primarily for 
0730: 75 73 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  use by..      //
0740: 20 20 20 20 20 20 20 74 68 65 20 74 65 73 74 20         the test 
0750: 73 75 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f  suite.  These co
0760: 75 6e 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65  unts are increme
0770: 6e 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  nted by the..   
0780: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f     //       asso
0790: 63 69 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74  ciated construct
07a0: 6f 72 73 20 61 6e 64 20 61 72 65 20 64 65 63 72  ors and are decr
07b0: 65 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65  emented upon the
07c0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
07d0: 20 73 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70   successful comp
07e0: 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73  letion of the as
07f0: 73 6f 63 69 61 74 65 64 20 52 65 6c 65 61 73 65  sociated Release
0800: 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f  Handle..      //
0810: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d         methods..
0820: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
0830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0840: 20 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43   int connectionC
0850: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0860: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0870: 20 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b   statementCount;
0880: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
0890: 20 73 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b   static int back
08a0: 75 70 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  upCount;..      
08b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
08c0: 69 6e 74 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a  int blobCount;..
08d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
08e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
08f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0940: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 65 74       #region Set
0950: 74 69 6e 67 73 20 52 65 61 64 20 43 6f 75 6e 74  tings Read Count
0960: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0970: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0990: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
09a0: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
09b0: 73 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20  stores the read 
09c0: 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72  counts for the r
09d0: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
09e0: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
09f0: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 69 73 20  settings.  This 
0a00: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f  information is o
0a10: 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77 68 65  nly recorded whe
0a20: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0a30: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 44 65  e..      /// "De
0a40: 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69  bug" build confi
0a50: 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  guration...     
0a60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
0a80: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
0a90: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65  <string, int> se
0aa0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b  ttingReadCounts;
0ab0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
0b10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0b20: 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69    /// This dicti
0b30: 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65  onary stores the
0b40: 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72   read counts for
0b50: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0b60: 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20  figuration..    
0b70: 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 20 76    /// settings v
0b80: 69 61 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ia the XML confi
0b90: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20  guration file.  
0ba0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0bb0: 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
0bc0: 2f 2f 2f 20 72 65 63 6f 72 64 65 64 20 77 68 65  /// recorded whe
0bd0: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0be0: 65 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  e "Debug" build 
0bf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0c00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0c20: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0c30: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0c40: 74 3e 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65  t> settingFileRe
0c50: 61 64 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69  adCounts;..#endi
0c60: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
0c70: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0cd0: 23 72 65 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f  #region Other Co
0ce0: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0cf0: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42  d Only)..#if DEB
0d00: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0d10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0d20: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0d30: 72 79 20 73 74 6f 72 65 73 20 6d 69 73 63 65 6c  ry stores miscel
0d40: 6c 61 6e 65 6f 75 73 20 63 6f 75 6e 74 73 20 75  laneous counts u
0d50: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
0d60: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72  g..      /// pur
0d70: 70 6f 73 65 73 2e 20 20 54 68 69 73 20 69 6e 66  poses.  This inf
0d80: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0d90: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0da0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0db0: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0dc0: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0dd0: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0de0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0df0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0e00: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0e10: 72 69 6e 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72  ring, int> other
0e20: 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d  Counts;..#endif.
0e30: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
0e40: 6e 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  n..      #endreg
0e50: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0eb0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
0ec0: 65 74 68 6f 64 73 0d 0a 23 69 66 20 44 45 42 55  ethods..#if DEBU
0ed0: 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  G..      /// <su
0ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0ef0: 2f 20 43 72 65 61 74 65 73 20 64 69 63 74 69 6f  / Creates dictio
0f00: 6e 61 72 69 65 73 20 75 73 65 64 20 74 6f 20 73  naries used to s
0f10: 74 6f 72 65 20 74 68 65 20 72 65 61 64 20 63 6f  tore the read co
0f20: 75 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f 66  unts for each of
0f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
0f40: 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
0f50: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20  ation settings. 
0f60: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
0f70: 72 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20  re used for..   
0f80: 20 20 20 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67     /// debugging
0f90: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0fa0: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
0fb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0fc0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
0fd0: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74  static void Init
0fe0: 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20  ialize()..      
0ff0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  {..          loc
1000: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
1010: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
1020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1030: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1040: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
1050: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 69 65   the dictionarie
1060: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
1070: 74 68 61 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20  that will..     
1080: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1090: 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75    contain the nu
10a0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
10b0: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
10c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d0: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
10e0: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
10f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1100: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1110: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
1120: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1130: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
1140: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  ngReadCounts = n
1150: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
1160: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d  ring, int>();...
1170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1180: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
1190: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
11a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11b0: 20 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65       settingFile
11c0: 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77  ReadCounts = new
11d0: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
11e0: 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20  ng, int>();.... 
11f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1200: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20  (otherCounts == 
1210: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1220: 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f           otherCo
1230: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
1240: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
1250: 74 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t>();..         
1260: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1270: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
12d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12e0: 20 51 75 65 72 69 65 73 20 74 68 65 20 72 65 61   Queries the rea
12f0: 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65  d counts for the
1300: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
1310: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e  ration settings.
1320: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73  ..      /// Thes
1330: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
1340: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
1350: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
1360: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
1370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
1390: 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46 69 6c  ram name="viaFil
13a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  e">..      /// N
13b0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
13c0: 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  pecified setting
13d0: 73 20 77 65 72 65 20 72 65 61 64 20 66 72 6f 6d  s were read from
13e0: 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20   the XML..      
13f0: 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  /// configuratio
1400: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
1410: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1420: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f  ..      /// A co
1440: 70 79 20 6f 66 20 74 68 65 20 73 74 61 74 69 73  py of the statis
1450: 74 69 63 73 20 66 6f 72 20 74 68 65 20 73 70 65  tics for the spe
1460: 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63  cified runtime c
1470: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
1480: 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73      /// settings
1490: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
14a0: 65 79 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  ey are not avail
14b0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
14c0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
14d0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
14e0: 20 6f 62 6a 65 63 74 20 47 65 74 53 65 74 74 69   object GetSetti
14f0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 28 0d 0a 20  ngReadCounts(.. 
1500: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69           bool vi
1510: 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  aFile..         
1520: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
1530: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1540: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1560: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 69 61           if (via
1570: 46 69 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  File)..         
1580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
15a0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
15b0: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1600: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
1610: 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e 67  ng, int>(setting
1620: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 29 3b  FileReadCounts);
1630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1640: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1650: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1670: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1680: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
1690: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63    return new Dic
16e0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
16f0: 69 6e 74 3e 28 73 65 74 74 69 6e 67 52 65 61 64  int>(settingRead
1700: 43 6f 75 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20  Counts);..      
1710: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1720: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
1730: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1780: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
1790: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17a0: 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74 68 65 20   /// Clears the 
17b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
17c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
17d0: 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e  iguration settin
17e0: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  gs...      /// T
17f0: 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65  hese numbers are
1800: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
1810: 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e 67 20  ing and testing 
1820: 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a  purposes only...
1830: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1840: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1850: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61  <param name="via
1860: 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  File">..      //
1870: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1880: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
1890: 69 6e 67 73 20 77 65 72 65 20 72 65 61 64 20 66  ings were read f
18a0: 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  rom the XML..   
18b0: 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
18c0: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
18d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
18f0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 53 65  tic void ClearSe
1900: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 28  ttingReadCounts(
1910: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
1920: 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20   viaFile..      
1930: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
1940: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1950: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1960: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1980: 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20 20 20  viaFile)..      
1990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
19b0: 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64  (settingFileRead
19c0: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
19d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e0: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
19f0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65  leReadCounts.Cle
1a00: 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ar();..         
1a10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a20: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a50: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1a60: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a80: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1a90: 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28 29 3b 0d  Counts.Clear();.
1aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
1ac0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72  ..      /// Incr
1b40: 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64 20  ements the read 
1b50: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70  count for the sp
1b60: 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20  ecified runtime 
1b70: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  configuration.. 
1b80: 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67       /// setting
1b90: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
1ba0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
1bb0: 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74  bugging and test
1bc0: 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20  ing purposes..  
1bd0: 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20      /// only... 
1be0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1bf0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
1c00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
1c10: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
1c20: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65  e name of the se
1c30: 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64  tting being read
1c40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
1c50: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
1c60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69   <param name="vi
1c70: 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  aFile">..      /
1c80: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
1c90: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
1ca0: 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72 65  ting is being re
1cb0: 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ad from the XML.
1cc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69  .      /// confi
1cd0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
1ce0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cf0: 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  m>..      public
1d00: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63   static void Inc
1d10: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
1d20: 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20  dCount(..       
1d30: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
1d40: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
1d50: 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20  viaFile..       
1d60: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
1d70: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1d80: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
1d90: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1da0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1dc0: 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74 61  NOTE: Update sta
1dd0: 74 69 73 74 69 63 73 20 66 6f 72 20 74 68 69 73  tistics for this
1de0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d   setting value..
1df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1e00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e10: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e40: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
1e50: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
1e60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e90: 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20   int count;.... 
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb0: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
1ec0: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 54  FileReadCounts.T
1ed0: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
1ee0: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f10: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61  ileReadCounts[na
1f20: 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b  me] = count + 1;
1f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f40: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f60: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f70: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41 64  ileReadCounts.Ad
1f80: 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20  d(name, 1);..   
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fc0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1fd0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fe0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1ff0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
2000: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2010: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2030: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2040: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2050: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
2060: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54  tingReadCounts.T
2070: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
2080: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
20b0: 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20  eadCounts[name] 
20c0: 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20  = count + 1;..  
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
20f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2100: 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43      settingReadC
2110: 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20  ounts.Add(name, 
2120: 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1);..           
2130: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2140: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2150: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
2160: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
21c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21d0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68 65   /// Queries the
21e0: 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68 65 73   counters.  Thes
21f0: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
2200: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
2210: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
2220: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
2230: 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f   only...      //
2240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2250: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2260: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  >..      /// A c
2270: 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 75 6e 74  opy of the count
2280: 65 72 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ers -OR- null if
2290: 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 61 76   they are not av
22a0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
22b0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
22c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
22d0: 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74 4f 74  tic object GetOt
22e0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
22f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2300: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2310: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2330: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2340: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2360: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
2370: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2380: 72 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72  rn new Dictionar
2390: 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 6f  y<string, int>(o
23a0: 74 68 65 72 43 6f 75 6e 74 73 29 3b 0d 0a 20 20  therCounts);..  
23b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
23d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
2420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2430: 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74      /// Clears t
2440: 68 65 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68  he counters.  Th
2450: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
2460: 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69  used for debuggi
2470: 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f  ng and..      //
2480: 2f 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  / testing purpos
2490: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
24a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
24b0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
24c0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 4f 74  tic void ClearOt
24d0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
24e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24f0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2500: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2510: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2520: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2530: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
2540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
2550: 68 65 72 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28  herCounts.Clear(
2560: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
2570: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
2580: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
25f0: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 73 70 65  crements the spe
2600: 63 69 66 69 65 64 20 63 6f 75 6e 74 65 72 2e 0d  cified counter..
2610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2630: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
2640: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
2650: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
2660: 63 6f 75 6e 74 65 72 20 62 65 69 6e 67 20 69 6e  counter being in
2670: 63 72 65 6d 65 6e 74 65 64 2e 0d 0a 20 20 20 20  cremented...    
2680: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2690: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
26a0: 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65  tic void Increme
26b0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 0d 0a 20  ntOtherCount(.. 
26c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
26d0: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
26e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
26f0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
2700: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
2710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2720: 20 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65          if (othe
2730: 72 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  rCounts != null)
2740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2750: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2760: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2780: 20 20 20 20 20 69 66 20 28 6f 74 68 65 72 43 6f       if (otherCo
2790: 75 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65  unts.TryGetValue
27a0: 28 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74  (name, out count
27b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
27c0: 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43            otherC
27d0: 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f  ounts[name] = co
27e0: 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20  unt + 1;..      
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2810: 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75          otherCou
2820: 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29  nts.Add(name, 1)
2830: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2840: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2850: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
2860: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
2870: 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  on..  }..#endif.
2880: 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
2890: 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e0: 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 48 65  ....  #region He
28f0: 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 53 74 61  lper Methods Sta
2900: 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f  tic Class..  ///
2910: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
2920: 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63 6c  / This static cl
2930: 61 73 73 20 70 72 6f 76 69 64 65 73 20 73 6f 6d  ass provides som
2940: 65 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  e methods that a
2950: 72 65 20 73 68 61 72 65 64 20 62 65 74 77 65 65  re shared betwee
2960: 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 6e 61 74  n the..  /// nat
2970: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
2980: 6c 6f 61 64 65 72 20 61 6e 64 20 6f 74 68 65 72  loader and other
2990: 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20 2f 2f 2f   classes...  ///
29a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69   </summary>..  i
29b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
29c0: 6c 61 73 73 20 48 65 6c 70 65 72 4d 65 74 68 6f  lass HelperMetho
29d0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
29e0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
29f0: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2a00: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a10: 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c  ring DisplayNull
2a20: 4f 62 6a 65 63 74 20 3d 20 22 3c 6e 75 6c 6c 4f  Object = "<nullO
2a30: 62 6a 65 63 74 3e 22 3b 0d 0a 20 20 20 20 20 20  bject>";..      
2a40: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a50: 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d 70 74  ring DisplayEmpt
2a60: 79 53 74 72 69 6e 67 20 3d 20 22 3c 65 6d 70 74  yString = "<empt
2a70: 79 53 74 72 69 6e 67 3e 22 3b 0d 0a 20 20 20 20  yString>";..    
2a80: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2a90: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 53 74  string DisplaySt
2aa0: 72 69 6e 67 46 6f 72 6d 61 74 20 3d 20 22 5c 22  ringFormat = "\"
2ab0: 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a 20 20 20 20 20  {0}\"";....     
2ac0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b10: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
2b20: 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79  t string Display
2b30: 4e 75 6c 6c 41 72 72 61 79 20 3d 20 22 3c 6e 75  NullArray = "<nu
2b40: 6c 6c 41 72 72 61 79 3e 22 3b 0d 0a 20 20 20 20  llArray>";..    
2b50: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2b60: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d  string DisplayEm
2b70: 70 74 79 41 72 72 61 79 20 3d 20 22 3c 65 6d 70  ptyArray = "<emp
2b80: 74 79 41 72 72 61 79 3e 22 3b 0d 0a 0d 0a 20 20  tyArray>";....  
2b90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2be0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2bf0: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 4f  onst char ArrayO
2c00: 70 65 6e 20 3d 20 27 5b 27 3b 0d 0a 20 20 20 20  pen = '[';..    
2c10: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2c20: 73 74 72 69 6e 67 20 45 6c 65 6d 65 6e 74 53 65  string ElementSe
2c30: 70 61 72 61 74 6f 72 20 3d 20 22 2c 20 22 3b 0d  parator = ", ";.
2c40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c50: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 43  onst char ArrayC
2c60: 6c 6f 73 65 20 3d 20 27 5d 27 3b 0d 0a 0d 0a 20  lose = ']';.... 
2c70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cc0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2cd0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
2ce0: 63 68 61 72 5b 5d 20 53 70 61 63 65 43 68 61 72  char[] SpaceChar
2cf0: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  s = {..         
2d00: 20 27 5c 74 27 2c 20 27 5c 6e 27 2c 20 27 5c 72   '\t', '\n', '\r
2d10: 27 2c 20 27 5c 76 27 2c 20 27 5c 66 27 2c 20 27  ', '\v', '\f', '
2d20: 20 27 0d 0a 20 20 20 20 20 20 7d 3b 0d 0a 20 20   '..      };..  
2d30: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d90: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
2da0: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
2db0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2dc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2dd0: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
2de0: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65  d to protect the
2df0: 20 73 74 61 74 69 63 20 3c 73 65 65 20 63 72 65   static <see cre
2e00: 66 3d 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 61 6e  f="isMono" /> an
2e10: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  d..      /// <se
2e20: 65 20 63 72 65 66 3d 22 69 73 44 6f 74 4e 65 74  e cref="isDotNet
2e30: 43 6f 72 65 22 20 2f 3e 20 66 69 65 6c 64 73 2e  Core" /> fields.
2e40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2e50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
2e60: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
2e70: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
2e80: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
2e90: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
2ea0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
2f10: 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c 79  his type is only
2f20: 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72 75   present when ru
2f30: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
2f40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2f50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
2f60: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
2f70: 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52  nly string MonoR
2f80: 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f  untimeType = "Mo
2f90: 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a  no.Runtime";....
2fa0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3000: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3010: 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c  This type is onl
3020: 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72  y present when r
3030: 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e 45 54 20 43  unning on .NET C
3040: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ore...      /// 
3050: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
3080: 20 44 6f 74 4e 65 74 43 6f 72 65 4c 69 62 54 79   DotNetCoreLibTy
3090: 70 65 20 3d 20 22 53 79 73 74 65 6d 2e 43 6f 72  pe = "System.Cor
30a0: 65 4c 69 62 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  eLib";....      
30b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3100: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3110: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
3120: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
3130: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
3140: 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61  on Mono.  Initia
3150: 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d  lly null, it is.
3160: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62  .      /// set b
3170: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
3180: 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68  "IsMono" /> meth
3190: 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20  od on its first 
31a0: 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74  call.  Later, it
31b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72  ..      /// is r
31c0: 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d  eturned verbatim
31d0: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
31e0: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
31f0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
3200: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3210: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3220: 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d  c bool? isMono =
3230: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3290: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32a0: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
32b0: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
32c0: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
32d0: 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 20 20 49  on .NET Core.  I
32e0: 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 0d 0a  nitially null,..
32f0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 69 73 20        /// it is 
3300: 73 65 74 20 62 79 20 74 68 65 20 3c 73 65 65 20  set by the <see 
3310: 63 72 65 66 3d 22 49 73 44 6f 74 4e 65 74 43 6f  cref="IsDotNetCo
3320: 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e  re" /> method on
3330: 20 69 74 73 20 66 69 72 73 74 0d 0a 20 20 20 20   its first..    
3340: 20 20 2f 2f 2f 20 63 61 6c 6c 2e 20 20 4c 61 74    /// call.  Lat
3350: 65 72 2c 20 69 74 20 69 73 20 72 65 74 75 72 6e  er, it is return
3360: 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20 74  ed verbatim by t
3370: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
3380: 65 65 20 63 72 65 66 3d 22 49 73 44 6f 74 4e 65  ee cref="IsDotNe
3390: 74 43 6f 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64  tCore" /> method
33a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
33b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
33c0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
33d0: 6f 6c 3f 20 69 73 44 6f 74 4e 65 74 43 6f 72 65  ol? isDotNetCore
33e0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
33f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
3440: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3450: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
3460: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
3470: 65 72 20 77 65 20 73 75 63 63 65 73 73 66 75 6c  er we successful
3480: 6c 79 20 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a  ly invoked the..
3490: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34a0: 72 65 66 3d 22 44 65 62 75 67 67 65 72 2e 42 72  ref="Debugger.Br
34b0: 65 61 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  eak" /> method. 
34c0: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
34d0: 20 69 74 20 69 73 20 73 65 74 20 62 79 0d 0a 20   it is set by.. 
34e0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
34f0: 65 20 63 72 65 66 3d 22 4d 61 79 62 65 42 72 65  e cref="MaybeBre
3500: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20  akIntoDebugger" 
3510: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
3520: 20 66 69 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20   first call...  
3530: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3540: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
3550: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64  e static bool? d
3560: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e  ebuggerBreak = n
3570: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ull;..      #end
3580: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
35f0: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
3600: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3610: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3620: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
3630: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3640: 65 73 73 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20  ess.  Only used 
3650: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a  for debugging...
3660: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3670: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3680: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
3690: 20 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74   /// The ID of t
36a0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
36b0: 73 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  ss -OR- zero if 
36c0: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
36d0: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
36e0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
36f0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
3700: 61 74 69 63 20 69 6e 74 20 47 65 74 50 72 6f 63  atic int GetProc
3710: 65 73 73 49 64 28 29 0d 0a 20 20 20 20 20 20 7b  essId()..      {
3720: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 72 6f 63  ..          Proc
3730: 65 73 73 20 70 72 6f 63 65 73 73 20 3d 20 50 72  ess process = Pr
3740: 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74  ocess.GetCurrent
3750: 50 72 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20  Process();....  
3760: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3770: 65 73 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ess == null)..  
3780: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3790: 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rn 0;....       
37a0: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
37b0: 73 2e 49 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  s.Id;..      }..
37c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3810: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
3820: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3830: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
3840: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73  ther or not this
3850: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
3860: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
3870: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3880: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
3890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
38a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
38b0: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73  this assembly is
38c0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f   running on Mono
38d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
38e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
38f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
3900: 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20  ol IsMono()..   
3910: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3920: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
3930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3940: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
3950: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
3960: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3970: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
3980: 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Mono == null).. 
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54       isMono = (T
39b0: 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f  ype.GetType(Mono
39c0: 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20  RuntimeType) != 
39d0: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
39f0: 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b  rn (bool)isMono;
3a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a10: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
3a20: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
3a30: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
3a50: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
3a60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3a70: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3a80: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
3a90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3ae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3af0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3b00: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3b10: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3b20: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3b30: 67 20 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 0d  g on .NET Core..
3b40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3b50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3b60: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3b70: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
3b80: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  f this assembly 
3b90: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e  is running on .N
3ba0: 45 54 20 43 6f 72 65 2e 0d 0a 20 20 20 20 20 20  ET Core...      
3bb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3bc0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
3bd0: 74 69 63 20 62 6f 6f 6c 20 49 73 44 6f 74 4e 65  tic bool IsDotNe
3be0: 74 43 6f 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  tCore()..      {
3bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
3c00: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
3c20: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3c40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3c50: 20 20 20 20 20 20 69 66 20 28 69 73 44 6f 74 4e        if (isDotN
3c60: 65 74 43 6f 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  etCore == null).
3c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 44 6f              isDo
3ca0: 74 4e 65 74 43 6f 72 65 20 3d 20 28 54 79 70 65  tNetCore = (Type
3cb0: 2e 47 65 74 54 79 70 65 28 0d 0a 20 20 20 20 20  .GetType(..     
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 44 6f 74 4e 65 74 43 6f 72 65 4c       DotNetCoreL
3ce0: 69 62 54 79 70 65 29 20 21 3d 20 6e 75 6c 6c 29  ibType) != null)
3cf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3d00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3d20: 72 6e 20 28 62 6f 6f 6c 29 69 73 44 6f 74 4e 65  rn (bool)isDotNe
3d30: 74 43 6f 72 65 3b 0d 0a 20 20 20 20 20 20 20 20  tCore;..        
3d40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3d50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3d60: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
3d70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3d80: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
3d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3da0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
3db0: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
3dc0: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
3dd0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3e30: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
3e40: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
3e50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3e60: 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20       /// Resets 
3e70: 74 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65  the cached value
3e80: 20 66 6f 72 20 74 68 65 20 22 50 72 65 4c 6f 61   for the "PreLoa
3e90: 64 53 51 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74  dSQLite_BreakInt
3ea0: 6f 44 65 62 75 67 67 65 72 22 0d 0a 20 20 20 20  oDebugger"..    
3eb0: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
3ec0: 69 6f 6e 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  ion setting...  
3ed0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3ee0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3ef0: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  al static void R
3f00: 65 73 65 74 42 72 65 61 6b 49 6e 74 6f 44 65 62  esetBreakIntoDeb
3f10: 75 67 67 65 72 28 29 0d 0a 20 20 20 20 20 20 7b  ugger()..      {
3f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
3f30: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3f40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
3f60: 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75  buggerBreak = nu
3f70: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
3f80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
3f90: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3fe0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3ff0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  ry>..      /// I
4000: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
4010: 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65  Lite_BreakIntoDe
4020: 62 75 67 67 65 72 22 20 63 6f 6e 66 69 67 75 72  bugger" configur
4030: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73  ation setting is
4040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 73  ..      /// pres
4050: 65 6e 74 20 28 65 2e 67 2e 20 76 69 61 20 74 68  ent (e.g. via th
4060: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 29 2c 20  e environment), 
4070: 67 69 76 65 20 74 68 65 20 69 6e 74 65 72 61 63  give the interac
4080: 74 69 76 65 20 75 73 65 72 20 61 6e 0d 0a 20 20  tive user an..  
4090: 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e      /// opportun
40a0: 69 74 79 20 74 6f 20 61 74 74 61 63 68 20 61 20  ity to attach a 
40b0: 64 65 62 75 67 67 65 72 20 74 6f 20 74 68 65 20  debugger to the 
40c0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 3b  current process;
40d0: 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   otherwise,..   
40e0: 20 20 20 2f 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e     /// do nothin
40f0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
4100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4110: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4120: 76 6f 69 64 20 4d 61 79 62 65 42 72 65 61 6b 49  void MaybeBreakI
4130: 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a 20  ntoDebugger().. 
4140: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4150: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
4160: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
4170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4180: 20 20 20 20 69 66 20 28 64 65 62 75 67 67 65 72      if (debugger
4190: 42 72 65 61 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Break != null)..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20    return;..     
41c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
41d0: 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61      if (UnsafeNa
41e0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53  tiveMethods.GetS
41f0: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
4210: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65  reLoadSQLite_Bre
4220: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 2c  akIntoDebugger",
4230: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
4240: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
4250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4270: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
4280: 6f 20 75 73 65 20 74 68 65 20 43 6f 6e 73 6f 6c  o use the Consol
4290: 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72  e in order to pr
42a0: 6f 6d 70 74 20 74 68 65 0d 0a 20 20 20 20 20 20  ompt the..      
42b0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
42c0: 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65   interactive use
42d0: 72 20 28 69 66 20 61 6e 79 29 2e 20 20 54 68 69  r (if any).  Thi
42e0: 73 20 6d 61 79 20 66 61 69 6c 20 66 6f 72 20 61  s may fail for a
42f0: 6e 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ny..            
4300: 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65    //       numbe
4310: 72 20 6f 66 20 72 65 61 73 6f 6e 73 2e 20 20 45  r of reasons.  E
4320: 76 65 6e 20 69 6e 20 74 68 6f 73 65 20 63 61 73  ven in those cas
4330: 65 73 2c 20 77 65 20 73 74 69 6c 6c 0d 0a 20 20  es, we still..  
4340: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4350: 20 20 20 20 20 77 61 6e 74 20 74 6f 20 69 73 73       want to iss
4360: 75 65 20 74 68 65 20 61 63 74 75 61 6c 20 72 65  ue the actual re
4370: 71 75 65 73 74 20 74 6f 20 62 72 65 61 6b 20 69  quest to break i
4380: 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
4390: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
43a0: 64 65 62 75 67 67 65 72 2e 0d 0a 20 20 20 20 20  debugger...     
43b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
43c0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
43e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
43f0: 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65     Console.Write
4400: 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61  Line(StringForma
4410: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
4420: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
4430: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
4440: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 74               "At
4460: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
4470: 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20 22  to process {0} "
4480: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
4490: 20 20 20 20 20 20 20 20 20 20 22 61 6e 64 20 70            "and p
44a0: 72 65 73 73 20 61 6e 79 20 6b 65 79 20 74 6f 20  ress any key to 
44b0: 63 6f 6e 74 69 6e 75 65 2e 22 2c 0d 0a 20 20 20  continue.",..   
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44d0: 20 20 20 47 65 74 50 72 6f 63 65 73 73 49 64 28     GetProcessId(
44e0: 29 29 29 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  )));....#if PLAT
44f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4500: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4510: 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65           Console
4520: 2e 52 65 61 64 4c 69 6e 65 28 29 3b 0d 0a 23 65  .ReadLine();..#e
4530: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
4540: 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52         Console.R
4550: 65 61 64 4b 65 79 28 29 3b 0d 0a 23 65 6e 64 69  eadKey();..#endi
4560: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4570: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
4580: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
4590: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
45a0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
45b0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
45c0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
45d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
45e0: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
45f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
4600: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
4610: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
4620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4630: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4640: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
4670: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
4680: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
4690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
46a0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
46b0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
46c0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
46d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46e0: 20 20 22 46 61 69 6c 65 64 20 74 6f 20 69 73 73    "Failed to iss
46f0: 75 65 20 64 65 62 75 67 67 65 72 20 70 72 6f 6d  ue debugger prom
4700: 70 74 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  pt, " +..       
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4720: 20 20 20 22 7b 30 7d 20 6d 61 79 20 62 65 20 75     "{0} may be u
4730: 6e 75 73 61 62 6c 65 3a 20 7b 31 7d 22 2c 0d 0a  nusable: {1}",..
4740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4750: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
4760: 28 43 6f 6e 73 6f 6c 65 29 2c 20 65 29 29 3b 20  (Console), e)); 
4770: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
47a0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
47e0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
47f0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
4800: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4810: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4820: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4830: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4840: 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62 75              Debu
4850: 67 67 65 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 0d  gger.Break();...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4870: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
4880: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
4890: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
48a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48b0: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
48c0: 61 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ak = true;..    
48d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
48e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
48f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4900: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
4910: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4920: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4930: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4960: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4970: 67 67 65 72 42 72 65 61 6b 20 3d 20 66 61 6c 73  ggerBreak = fals
4980: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
4990: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
49b0: 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow;..           
49c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
49d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
49e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  e..          {..
49f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4a10: 2f 2f 20 42 55 47 46 49 58 3a 20 54 68 65 72 65  // BUGFIX: There
4a20: 20 69 73 20 28 61 6c 6d 6f 73 74 29 20 6e 6f 20   is (almost) no 
4a30: 70 6f 69 6e 74 20 69 6e 20 63 68 65 63 6b 69 6e  point in checkin
4a40: 67 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  g for the..     
4a50: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
4a60: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
4a70: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
4a80: 74 69 6e 67 20 72 65 70 65 61 74 65 64 6c 79 2e  ting repeatedly.
4a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4aa0: 2f 2f 20 20 20 20 20 20 20 20 20 50 72 65 76 65  //         Preve
4ab0: 6e 74 20 74 68 61 74 20 68 65 72 65 20 62 79 20  nt that here by 
4ac0: 73 65 74 74 69 6e 67 20 74 68 65 20 63 61 63 68  setting the cach
4ad0: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4ae0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4af0: 20 20 20 74 6f 20 66 61 6c 73 65 2e 0d 0a 20 20     to false...  
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
4b20: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
4b30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
4b40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4b50: 20 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72          debugger
4b60: 42 72 65 61 6b 20 3d 20 66 61 6c 73 65 3b 0d 0a  Break = false;..
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
4b90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4bf0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
4c10: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
4c20: 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65  the current thre
4c30: 61 64 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66  ad.  Only used f
4c40: 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20  or debugging... 
4c50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4c60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4c70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4c80: 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68  /// The ID of th
4c90: 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64  e current thread
4ca0: 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74   -OR- zero if it
4cb0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
4cc0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
4cd0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4ce0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4cf0: 74 69 63 20 69 6e 74 20 47 65 74 54 68 72 65 61  tic int GetThrea
4d00: 64 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  dId()..      {..
4d10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4d20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
4d30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4d40: 20 41 70 70 44 6f 6d 61 69 6e 2e 47 65 74 43 75   AppDomain.GetCu
4d50: 72 72 65 6e 74 54 68 72 65 61 64 49 64 28 29 3b  rrentThreadId();
4d60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4d70: 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65     return 0;..#e
4d80: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
4d90: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
4df0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4e00: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
4e10: 20 70 72 65 70 61 72 69 6e 67 20 61 20 71 75 65   preparing a que
4e20: 72 79 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ry should be log
4e30: 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ged...      /// 
4e40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4e50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4e60: 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20  e="flags">..    
4e70: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4e80: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4e90: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
4ea0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
4eb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4ec0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
4ed0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
4ee0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
4ef0: 65 20 71 75 65 72 79 20 70 72 65 70 61 72 61 74  e query preparat
4f00: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ion should be lo
4f10: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
4f20: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
4f30: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4f40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4f50: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65 70  tic bool LogPrep
4f60: 61 72 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  are(..          
4f70: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4f80: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
4f90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4fa0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
4fb0: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
4fc0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50  ectionFlags.LogP
4fd0: 72 65 70 61 72 65 3b 0d 0a 20 20 20 20 20 20 20  repare;..       
4fe0: 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73     return (flags
4ff0: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
5000: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65  tionFlags.LogPre
5010: 70 61 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pare);..      }.
5020: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5070: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5080: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5090: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
50a0: 20 70 72 65 2d 70 61 72 61 6d 65 74 65 72 20 62   pre-parameter b
50b0: 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  inding should be
50c0: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
50d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
50e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
50f0: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
5100: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
5110: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
5120: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5130: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5140: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5150: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5160: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5170: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5180: 66 20 74 68 65 20 70 72 65 2d 70 61 72 61 6d 65  f the pre-parame
5190: 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f 75  ter binding shou
51a0: 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74  ld be logged; ot
51b0: 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
51c0: 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
51d0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
51e0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
51f0: 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50  static bool LogP
5200: 72 65 42 69 6e 64 28 0d 0a 20 20 20 20 20 20 20  reBind(..       
5210: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5220: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
5230: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5240: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5250: 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43  flags &= SQLiteC
5260: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5270: 6f 67 50 72 65 42 69 6e 64 3b 0d 0a 20 20 20 20  ogPreBind;..    
5280: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c        return (fl
5290: 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  ags == SQLiteCon
52a0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
52b0: 50 72 65 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20  PreBind);..     
52c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5320: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5330: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
5340: 20 69 66 20 70 61 72 61 6d 65 74 65 72 20 62 69   if parameter bi
5350: 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20  nding should be 
5360: 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f  logged...      /
5370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5380: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
5390: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
53a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
53b0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
53c0: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
53d0: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
53e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
53f0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5400: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
5410: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
5420: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 62   the parameter b
5430: 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  inding should be
5440: 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69   logged; otherwi
5450: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  se, zero...     
5460: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
5470: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
5480: 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42  static bool LogB
5490: 69 6e 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ind(..          
54a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
54b0: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
54c0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
54d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
54e0: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
54f0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42  ectionFlags.LogB
5500: 69 6e 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ind;..          
5510: 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d  return (flags ==
5520: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
5530: 6e 46 6c 61 67 73 2e 4c 6f 67 42 69 6e 64 29 3b  nFlags.LogBind);
5540: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5550: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
55a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
55b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
55c0: 65 72 6d 69 6e 65 73 20 69 66 20 61 6e 20 65 78  ermines if an ex
55d0: 63 65 70 74 69 6f 6e 20 69 6e 20 61 20 6e 61 74  ception in a nat
55e0: 69 76 65 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f  ive callback sho
55f0: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
5600: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5610: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5620: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
5630: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
5640: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
5650: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
5660: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
5670: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
5680: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
5690: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
56a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
56b0: 7a 65 72 6f 20 69 66 20 74 68 65 20 65 78 63 65  zero if the exce
56c0: 70 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20  ption should be 
56d0: 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73  logged; otherwis
56e0: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
56f0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5700: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
5710: 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 43 61  tatic bool LogCa
5720: 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 73  llbackExceptions
5730: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
5740: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5750: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
5760: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
5770: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
5780: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
5790: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c  ionFlags.LogCall
57a0: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 3b 0d 0a  backException;..
57b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
57c0: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
57d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
57e0: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
57f0: 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ption);..      }
5800: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5850: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5860: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5870: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5880: 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72  f backup API err
5890: 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ors should be lo
58a0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
58b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
58c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
58d0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
58e0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
58f0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5900: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5910: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5920: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5930: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5940: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5950: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5960: 68 65 20 62 61 63 6b 75 70 20 41 50 49 20 65 72  he backup API er
5970: 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ror should be lo
5980: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
5990: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
59a0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
59b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
59c0: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b  tic bool LogBack
59d0: 75 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  up(..          S
59e0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
59f0: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
5a00: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
5a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
5a20: 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s &= SQLiteConne
5a30: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61  ctionFlags.LogBa
5a40: 63 6b 75 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  ckup;..         
5a50: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
5a60: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
5a70: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b 75  onFlags.LogBacku
5a80: 70 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  p);..      }....
5a90: 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
5aa0: 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20  UAL_TABLE..     
5ab0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
5b20: 6d 69 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e 67  mines if logging
5b30: 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72   for the <see cr
5b40: 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
5b50: 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a 20  " /> class is.. 
5b60: 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c 65       /// disable
5b70: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
5b80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5b90: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5ba0: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
5bb0: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
5bc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
5bd0: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
5be0: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
5bf0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
5c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
5c10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
5c20: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67 67  Non-zero if logg
5c30: 69 6e 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65  ing for the <see
5c40: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
5c50: 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73  ule" /> class is
5c60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61  ..      /// disa
5c70: 62 6c 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  bled; otherwise,
5c80: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
5c90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
5ca0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5cb0: 74 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d 6f  tic bool NoLogMo
5cc0: 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
5cd0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
5ce0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
5cf0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
5d00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
5d10: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
5d20: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c  nectionFlags.NoL
5d30: 6f 67 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  ogModule;..     
5d40: 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61       return (fla
5d50: 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs == SQLiteConn
5d60: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f  ectionFlags.NoLo
5d70: 67 4d 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20  gModule);..     
5d80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5de0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5df0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
5e00: 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   if <see cref="S
5e10: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
5e20: 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65  errors should be
5e30: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
5e40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5e50: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
5e60: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
5e70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
5e80: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
5e90: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5ea0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5eb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5ec0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5ed0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5ee0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5ef0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
5f00: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
5f10: 3e 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62  > error should b
5f20: 65 20 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20  e logged;..     
5f30: 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20   /// otherwise, 
5f40: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
5f50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
5f60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5f70: 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c  ic bool LogModul
5f80: 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
5f90: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5fa0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
5fb0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5fc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5fd0: 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43  flags &= SQLiteC
5fe0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5ff0: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 3b 0d 0a  ogModuleError;..
6000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6010: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
6020: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
6030: 2e 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 29  .LogModuleError)
6040: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
6050: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
60a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
60b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
60c0: 74 65 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65  termines if <see
60d0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
60e0: 75 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f  ule" /> exceptio
60f0: 6e 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20  ns should be..  
6100: 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d      /// logged..
6110: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6120: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6130: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
6140: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
6150: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
6160: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
6170: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
6180: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
6190: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
61a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
61b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
61c0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
61d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
61e0: 64 75 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69  dule" /> excepti
61f0: 6f 6e 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20  on should be..  
6200: 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20      /// logged; 
6210: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
6220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6230: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
6240: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
6250: 6f 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65  ol LogModuleExce
6260: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
6270: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
6280: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
6290: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
62a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66    {..          f
62b0: 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f  lags &= SQLiteCo
62c0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
62d0: 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e  gModuleException
62e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
62f0: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
6300: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
6310: 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78 63  ags.LogModuleExc
6320: 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  eption);..      
6330: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
6340: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
6390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
63a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
63b0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 63  ermines if the c
63c0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 69  urrent process i
63d0: 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f 6e 65  s running on one
63e0: 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77 73 0d   of the Windows.
63f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73 75 62 2d  .      /// [sub-
6400: 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20 20 20  ]platforms...   
6410: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
6430: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
6440: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65 6e 20  / Non-zero when 
6450: 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f  running on Windo
6460: 77 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ws; otherwise, z
6470: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
6480: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
6490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
64a0: 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64 6f 77 73  c bool IsWindows
64b0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
64c0: 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49         PlatformI
64d0: 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45  D platformId = E
64e0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72  nvironment.OSVer
64f0: 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a  sion.Platform;..
6500: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
6510: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
6520: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53  latformID.Win32S
6530: 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
6540: 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20      (platformId 
6550: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
6560: 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a  n32Windows) ||..
6570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
6580: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
6590: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29  tformID.Win32NT)
65a0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
65b0: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
65c0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
65d0: 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  CE))..          
65e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
65f0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
6600: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
6610: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
6620: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
6630: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
6690: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
66a0: 2f 20 54 68 69 73 20 69 73 20 61 20 77 72 61 70  / This is a wrap
66b0: 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 0d 0a  per around the..
66c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
66d0: 72 65 66 3d 22 53 74 72 69 6e 67 2e 46 6f 72 6d  ref="String.Form
66e0: 61 74 28 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  at(IFormatProvid
66f0: 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a 65 63 74  er,String,Object
6700: 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  [])" /> method..
6710: 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e 20 4d 6f  .      /// On Mo
6720: 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f 20 63 61  no, it has to ca
6730: 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 20 6f 76  ll the method ov
6740: 65 72 6c 6f 61 64 20 77 69 74 68 6f 75 74 20 74  erload without t
6750: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
6760: 65 65 20 63 72 65 66 3d 22 49 46 6f 72 6d 61 74  ee cref="IFormat
6770: 50 72 6f 76 69 64 65 72 22 20 2f 3e 20 70 61 72  Provider" /> par
6780: 61 6d 65 74 65 72 2c 20 64 75 65 20 74 6f 20 61  ameter, due to a
6790: 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d 0a 20   bug in Mono... 
67a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
67b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
67c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76  param name="prov
67d0: 69 64 65 72 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ider">..      //
67e0: 2f 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66  / This is used f
67f0: 6f 72 20 63 75 6c 74 75 72 65 2d 73 70 65 63 69  or culture-speci
6800: 66 69 63 20 66 6f 72 6d 61 74 74 69 6e 67 2e 0d  fic formatting..
6810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
6820: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
6830: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d  param name="form
6840: 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  at">..      /// 
6850: 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  The format strin
6860: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
6870: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6880: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
6890: 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rgs">..      ///
68a0: 20 41 6e 20 61 72 72 61 79 20 74 68 65 20 6f 62   An array the ob
68b0: 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d 61 74 2e  jects to format.
68c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
68d0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
68e0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
68f0: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
6900: 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  ng string...    
6910: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
6920: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6930: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53   static string S
6940: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
6950: 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50          IFormatP
6960: 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65 72  rovider provider
6970: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ,..          str
6980: 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20  ing format,..   
6990: 20 20 20 20 20 20 20 70 61 72 61 6d 73 20 6f 62         params ob
69a0: 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20  ject[] args..   
69b0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
69c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
69d0: 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20 20 20  (IsMono())..    
69e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
69f0: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 66   String.Format(f
6a00: 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20  ormat, args);.. 
6a10: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
6a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6a30: 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  urn String.Forma
6a40: 74 28 70 72 6f 76 69 64 65 72 2c 20 66 6f 72 6d  t(provider, form
6a50: 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20 20  at, args);..    
6a60: 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
6a70: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6ad0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
6ae0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
6af0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
6b00: 72 69 6e 67 20 54 6f 44 69 73 70 6c 61 79 53 74  ring ToDisplaySt
6b10: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
6b20: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
6b30: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6b40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
6b50: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
6b60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6b70: 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e   return DisplayN
6b80: 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20  ullObject;....  
6b90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
6ba0: 74 72 69 6e 67 56 61 6c 75 65 20 3d 20 76 61 6c  tringValue = val
6bb0: 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  ue.ToString();..
6bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
6bd0: 73 74 72 69 6e 67 56 61 6c 75 65 2e 4c 65 6e 67  stringValue.Leng
6be0: 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  th == 0)..      
6bf0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
6c00: 69 73 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e  isplayEmptyStrin
6c10: 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  g;....          
6c20: 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e  if (stringValue.
6c30: 49 6e 64 65 78 4f 66 41 6e 79 28 53 70 61 63 65  IndexOfAny(Space
6c40: 43 68 61 72 73 29 20 3c 20 30 29 0d 0a 20 20 20  Chars) < 0)..   
6c50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6c60: 6e 20 73 74 72 69 6e 67 56 61 6c 75 65 3b 0d 0a  n stringValue;..
6c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
6c80: 72 6e 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  rn HelperMethods
6c90: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
6cb0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
6cc0: 61 6e 74 43 75 6c 74 75 72 65 2c 20 44 69 73 70  antCulture, Disp
6cd0: 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 2c  layStringFormat,
6ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6cf0: 73 74 72 69 6e 67 56 61 6c 75 65 29 3b 0d 0a 20  stringValue);.. 
6d00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6d60: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
6d70: 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c 61   string ToDispla
6d80: 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  yString(..      
6d90: 20 20 20 20 41 72 72 61 79 20 61 72 72 61 79 0d      Array array.
6da0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
6db0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6dc0: 20 69 66 20 28 61 72 72 61 79 20 3d 3d 20 6e 75   if (array == nu
6dd0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6de0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
6df0: 79 4e 75 6c 6c 41 72 72 61 79 3b 0d 0a 0d 0a 20  yNullArray;.... 
6e00: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72           if (arr
6e10: 61 79 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  ay.Length == 0).
6e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
6e30: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
6e40: 74 79 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20 20  tyArray;....    
6e50: 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c        StringBuil
6e60: 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  der result = new
6e70: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
6e80: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
6e90: 6f 72 65 61 63 68 20 28 6f 62 6a 65 63 74 20 76  oreach (object v
6ea0: 61 6c 75 65 20 69 6e 20 61 72 72 61 79 29 0d 0a  alue in array)..
6eb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6ec0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
6ed0: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
6ee0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6ef0: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
6f00: 6e 64 28 45 6c 65 6d 65 6e 74 53 65 70 61 72 61  nd(ElementSepara
6f10: 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tor);....       
6f20: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
6f30: 70 65 6e 64 28 54 6f 44 69 73 70 6c 61 79 53 74  pend(ToDisplaySt
6f40: 72 69 6e 67 28 76 61 6c 75 65 29 29 3b 0d 0a 20  ring(value));.. 
6f50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
6f60: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75          if (resu
6f70: 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a  lt.Length > 0)..
6f80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
6f90: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
6fa0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6fb0: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
6fc0: 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79  .Insert(0, Array
6fd0: 4f 70 65 6e 2e 54 6f 53 74 72 69 6e 67 28 29 29  Open.ToString())
6fe0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
6ff0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 49          result.I
7000: 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79 4f 70  nsert(0, ArrayOp
7010: 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  en);..#endif....
7020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7030: 73 75 6c 74 2e 41 70 70 65 6e 64 28 41 72 72 61  sult.Append(Arra
7040: 79 43 6c 6f 73 65 29 3b 0d 0a 20 20 20 20 20 20  yClose);..      
7050: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7060: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
7070: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
7080: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
7090: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20  dregion..  }..  
70a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7100: 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76  .  #region Nativ
7110: 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70 65 72  e Library Helper
7120: 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73   Class..  /// <s
7130: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
7140: 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73 73  his static class
7150: 20 70 72 6f 76 69 64 65 73 20 61 20 74 68 69 6e   provides a thin
7160: 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
7170: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
7180: 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69 6e  ry..  /// loadin
7190: 67 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68  g features of th
71a0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c 61  e underlying pla
71b0: 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  tform...  /// </
71c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
71d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
71e0: 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48  s NativeLibraryH
71f0: 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20 20  elper..  {..    
7200: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
7210: 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20  e Delegates..   
7220: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7230: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
7240: 20 64 65 6c 65 67 61 74 65 20 69 73 20 75 73 65   delegate is use
7250: 64 20 74 6f 20 77 72 61 70 20 74 68 65 20 63 6f  d to wrap the co
7260: 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e 67  ncept of loading
7270: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
7280: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62 61   /// library, ba
7290: 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e 61  sed on a file na
72a0: 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e  me, and returnin
72b0: 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f 64  g the loaded mod
72c0: 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  ule..      /// h
72d0: 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  andle...      //
72e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
72f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7300: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
7310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
7320: 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ile name of the 
7330: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74  native library t
7340: 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o load...      /
7350: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7360: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7370: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
7380: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
7390: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
73a0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
73b0: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
73c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
73d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
73e0: 61 74 65 20 64 65 6c 65 67 61 74 65 20 49 6e 74  ate delegate Int
73f0: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 43  Ptr LoadLibraryC
7400: 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  allback(..      
7410: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
7420: 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a 0d  ame..      );...
7430: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
7490: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
74a0: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
74b0: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
74c0: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
74d0: 71 75 65 72 79 69 6e 67 20 74 68 65 20 6d 61 63  querying the mac
74e0: 68 69 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hine..      /// 
74f0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75 72 72  name of the curr
7500: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
7510: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7520: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
7530: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
7540: 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65 20 6e  // The machine n
7550: 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75 72 72  ame for the curr
7560: 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
7570: 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75 72 65   null on failure
7580: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7590: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
75a0: 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65 20  rivate delegate 
75b0: 73 74 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e  string GetMachin
75c0: 65 43 61 6c 6c 62 61 63 6b 28 29 3b 0d 0a 20 20  eCallback();..  
75d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
75e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7630: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
7640: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
7650: 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ds..      /// <s
7660: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7670: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
7680: 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65  oad the specifie
7690: 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  d native library
76a0: 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20   file using the 
76b0: 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f 2f 2f  Win32..      ///
76c0: 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   API...      ///
76d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
76e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
76f0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
7700: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
7710: 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  le name of the n
7720: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f  ative library to
7730: 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   load...      //
7740: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7750: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
7760: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7770: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
7780: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
7790: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
77a0: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
77b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
77c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
77d0: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
77e0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33   LoadLibraryWin3
77f0: 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  2(..          st
7800: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
7810: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
7820: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
7830: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
7840: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 4c  veMethodsWin32.L
7850: 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e  oadLibrary(fileN
7860: 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ame);..      }..
7870: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
78d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
78e0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
78f0: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
7900: 63 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68  chine name of th
7910: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
7920: 73 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20 2f  s using..      /
7930: 2f 2f 20 74 68 65 20 57 69 6e 33 32 20 41 50 49  // the Win32 API
7940: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7950: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7960: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7970: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68      /// The mach
7980: 69 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ine name for the
7990: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
79a0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61   -OR- null on fa
79b0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
79c0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
79d0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
79e0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63  ic string GetMac
79f0: 68 69 6e 65 57 69 6e 33 32 28 29 0d 0a 20 20 20  hineWin32()..   
7a00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7a10: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7a20: 20 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e   NOTE: When runn
7a30: 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 2c 20  ing on Windows, 
7a40: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
7a50: 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32 0d  he native Win32.
7a60: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7a70: 20 20 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e      API function
7a80: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
7a90: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
7aa0: 20 75 73 20 77 69 74 68 20 74 68 65 0d 0a 20 20   us with the..  
7ab0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7ac0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7ad0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
7ae0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7af0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
7b00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7b10: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
7b20: 74 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54 45  thodsWin32.SYSTE
7b30: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
7b40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
7b50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7b60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
7b70: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
7b80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
7b90: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7bb0: 20 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74         filling t
7bc0: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
7bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
7be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55  .              U
7bf0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7c00: 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65  dsWin32.GetSyste
7c10: 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d  mInfo(out system
7c20: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
7c30: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7c40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
7c50: 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72  E: Return the pr
7c60: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
7c70: 74 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20  ture value as a 
7c80: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
7c90: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7ca0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7cb0: 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63  systemInfo.wProc
7cc0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
7cd0: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
7ce0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
7cf0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
7d00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7d10: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
7d20: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
7d30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7d40: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7d50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7db0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7dc0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7dd0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
7df0: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
7e00: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
7e10: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
7e20: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
7e30: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
7e40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7e50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7e60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
7e70: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
7e80: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
7e90: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
7ea0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
7eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7ec0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7ed0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7ee0: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
7ef0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
7f00: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
7f10: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
7f20: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
7f30: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7f40: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
7f50: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
7f60: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
7f70: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
7f80: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
7f90: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
7fa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
7fb0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7fc0: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
7fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
7fe0: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
7ff0: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
8000: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
8010: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
8020: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8070: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8080: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
8090: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72  ttempts to deter
80a0: 6d 69 6e 65 20 74 68 65 20 6d 61 63 68 69 6e 65  mine the machine
80b0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75 72   name of the cur
80c0: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 75 73 69  rent process usi
80d0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
80e0: 65 20 50 4f 53 49 58 20 41 50 49 2e 0d 0a 20 20  e POSIX API...  
80f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8100: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
8110: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
8120: 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65 20 6e  // The machine n
8130: 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75 72 72  ame for the curr
8140: 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
8150: 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75 72 65   null on failure
8160: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
8170: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
8180: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8190: 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e 65 50  ring GetMachineP
81a0: 6f 73 69 78 28 29 0d 0a 20 20 20 20 20 20 7b 0d  osix()..      {.
81b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
81c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
81d0: 3a 20 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  : When running o
81e0: 6e 20 50 4f 53 49 58 20 28 6e 6f 6e 2d 57 69 6e  n POSIX (non-Win
81f0: 64 6f 77 73 29 2c 20 61 74 74 65 6d 70 74 20 74  dows), attempt t
8200: 6f 20 71 75 65 72 79 20 74 68 65 0d 0a 20 20 20  o query the..   
8210: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8220: 6d 61 63 68 69 6e 65 20 66 72 6f 6d 20 74 68 65  machine from the
8230: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
8240: 6d 20 76 69 61 20 75 6e 61 6d 65 28 29 2e 0d 0a  m via uname()...
8250: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8260: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8270: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8280: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
8290: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
82a0: 2e 75 74 73 6e 61 6d 65 20 75 74 73 4e 61 6d 65  .utsname utsName
82b0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
82c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55 6e            if (Un
82d0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
82e0: 73 50 6f 73 69 78 2e 47 65 74 4f 73 56 65 72 73  sPosix.GetOsVers
82f0: 69 6f 6e 49 6e 66 6f 28 72 65 66 20 75 74 73 4e  ionInfo(ref utsN
8300: 61 6d 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ame) &&..       
8310: 20 20 20 20 20 20 20 20 20 20 20 28 75 74 73 4e             (utsN
8320: 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ame != null)).. 
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 72 65 74 75 72 6e 20 75 74 73 4e 61 6d 65    return utsName
8360: 2e 6d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20  .machine;..     
8370: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8380: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8390: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
83a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
83b0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
83c0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ng...          }
83d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
83e0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
83f0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
8400: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
8410: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
8420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8460: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
8470: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
8480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8490: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
84a0: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
84b0: 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
84c0: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66  native library f
84d0: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
84e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
84f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8500: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
8510: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
8520: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
8530: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
8540: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
8550: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8560: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
8570: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
8580: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
8590: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
85a0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
85b0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
85c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
85d0: 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  s>..      public
85e0: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c   static IntPtr L
85f0: 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20 20  oadLibrary(..   
8600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
8610: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
8620: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
8630: 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62 72          LoadLibr
8640: 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  aryCallback call
8650: 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61  back = LoadLibra
8660: 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20  ryWin32;....#if 
8670: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8680: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8690: 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70 65        if (!Helpe
86a0: 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f  rMethods.IsWindo
86b0: 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ws())..         
86c0: 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20       callback = 
86d0: 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78  LoadLibraryPosix
86e0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
86f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
8700: 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29  llback(fileName)
8710: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
8720: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8770: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8790: 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  Attempts to dete
87a0: 72 6d 69 6e 65 20 74 68 65 20 6d 61 63 68 69 6e  rmine the machin
87b0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75  e name of the cu
87c0: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
87d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
87e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
87f0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
8800: 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65   /// The machine
8810: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75   name for the cu
8820: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f  rrent process -O
8830: 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75  R- null on failu
8840: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
8850: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
8860: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
8870: 74 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e 65  tring GetMachine
8880: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
8890: 20 20 20 20 20 20 20 47 65 74 4d 61 63 68 69 6e         GetMachin
88a0: 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
88b0: 63 6b 20 3d 20 47 65 74 4d 61 63 68 69 6e 65 57  ck = GetMachineW
88c0: 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  in32;....#if !PL
88d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
88e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
88f0: 20 20 20 69 66 20 28 21 48 65 6c 70 65 72 4d 65     if (!HelperMe
8900: 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28  thods.IsWindows(
8910: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
8920: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 47 65 74    callback = Get
8930: 4d 61 63 68 69 6e 65 50 6f 73 69 78 3b 0d 0a 23  MachinePosix;..#
8940: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
8950: 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 62 61     return callba
8960: 63 6b 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ck();..      }..
8970: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8980: 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
8990: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
89f0: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
8a00: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
8a10: 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f 53 49  atic Class (POSI
8a20: 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  X)..#if !PLATFOR
8a30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8a40: 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  RK..  /// <summa
8a50: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
8a60: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
8a70: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
8a80: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 50  to call native P
8a90: 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f 2f  OSIX APIs...  //
8aa0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8ab0: 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67  [SuppressUnmanag
8ac0: 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d  edCodeSecurity].
8ad0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
8ae0: 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e  ic class UnsafeN
8af0: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
8b00: 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  x..  {..      //
8b10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8b20: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
8b30: 63 74 75 72 65 20 69 73 20 75 73 65 64 20 77 68  cture is used wh
8b40: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 50 4f  en running on PO
8b50: 53 49 58 20 6f 70 65 72 61 74 69 6e 67 20 73 79  SIX operating sy
8b60: 73 74 65 6d 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  stems..      ///
8b70: 20 74 6f 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d   to store inform
8b80: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
8b90: 63 75 72 72 65 6e 74 20 6d 61 63 68 69 6e 65 2c  current machine,
8ba0: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a   including the..
8bb0: 20 20 20 20 20 20 2f 2f 2f 20 68 75 6d 61 6e 20        /// human 
8bc0: 72 65 61 64 61 62 6c 65 20 6e 61 6d 65 20 6f 66  readable name of
8bd0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
8be0: 79 73 74 65 6d 20 61 73 20 77 65 6c 6c 20 61 73  ystem as well as
8bf0: 20 74 68 61 74 20 6f 66 0d 0a 20 20 20 20 20 20   that of..      
8c00: 2f 2f 2f 20 74 68 65 20 75 6e 64 65 72 6c 79 69  /// the underlyi
8c10: 6e 67 20 68 61 72 64 77 61 72 65 2e 0d 0a 20 20  ng hardware...  
8c20: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8c30: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
8c40: 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
8c50: 75 74 73 6e 61 6d 65 0d 0a 20 20 20 20 20 20 7b  utsname..      {
8c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
8c70: 69 63 20 73 74 72 69 6e 67 20 73 79 73 6e 61 6d  ic string sysnam
8c80: 65 3b 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74  e;  /* Name of t
8c90: 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  his implementati
8ca0: 6f 6e 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  on of..         
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 20 20 20 20 20 20 20 20 2a 20 74 68 65 20            * the 
8cd0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
8ce0: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  . */..          
8cf0: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 6e 6f  public string no
8d00: 64 65 6e 61 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20  dename; /* Name 
8d10: 6f 66 20 74 68 69 73 20 6e 6f 64 65 20 77 69 74  of this node wit
8d20: 68 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hin the..       
8d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
8d50: 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 20 6e 65 74  mmunications net
8d60: 77 6f 72 6b 20 74 6f 20 77 68 69 63 68 0d 0a 20  work to which.. 
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d90: 20 20 2a 20 74 68 69 73 20 6e 6f 64 65 20 69 73    * this node is
8da0: 20 61 74 74 61 63 68 65 64 2c 20 69 66 20 61 6e   attached, if an
8db0: 79 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  y. */..         
8dc0: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 72   public string r
8dd0: 65 6c 65 61 73 65 3b 20 20 2f 2a 20 43 75 72 72  elease;  /* Curr
8de0: 65 6e 74 20 72 65 6c 65 61 73 65 20 6c 65 76 65  ent release leve
8df0: 6c 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20  l of this..     
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
8e20: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
8e30: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
8e40: 62 6c 69 63 20 73 74 72 69 6e 67 20 76 65 72 73  blic string vers
8e50: 69 6f 6e 3b 20 20 2f 2a 20 43 75 72 72 65 6e 74  ion;  /* Current
8e60: 20 76 65 72 73 69 6f 6e 20 6c 65 76 65 6c 20 6f   version level o
8e70: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  f this..        
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e90: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 6c             * rel
8ea0: 65 61 73 65 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ease. */..      
8eb0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
8ec0: 67 20 6d 61 63 68 69 6e 65 3b 20 20 2f 2a 20 4e  g machine;  /* N
8ed0: 61 6d 65 20 6f 66 20 74 68 65 20 68 61 72 64 77  ame of the hardw
8ee0: 61 72 65 20 74 79 70 65 20 6f 6e 0d 0a 20 20 20  are type on..   
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f10: 2a 20 77 68 69 63 68 20 74 68 65 20 73 79 73 74  * which the syst
8f20: 65 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 2a  em is running. *
8f30: 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  /..      }....  
8f40: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8f90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8fa0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8fb0: 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20 69  This structure i
8fc0: 73 20 70 61 73 73 65 64 20 64 69 72 65 63 74 6c  s passed directl
8fd0: 79 20 74 6f 20 74 68 65 20 50 2f 49 6e 76 6f 6b  y to the P/Invok
8fe0: 65 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  e method to..   
8ff0: 20 20 20 2f 2f 2f 20 6f 62 74 61 69 6e 20 74 68     /// obtain th
9000: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  e information ab
9010: 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20  out the current 
9020: 6d 61 63 68 69 6e 65 2c 20 69 6e 63 6c 75 64 69  machine, includi
9030: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
9040: 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65  e human readable
9050: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65   name of the ope
9060: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 73  rating system as
9070: 20 77 65 6c 6c 20 61 73 0d 0a 20 20 20 20 20 20   well as..      
9080: 2f 2f 2f 20 74 68 61 74 20 6f 66 20 74 68 65 20  /// that of the 
9090: 75 6e 64 65 72 6c 79 69 6e 67 20 68 61 72 64 77  underlying hardw
90a0: 61 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  are...      /// 
90b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
90c0: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
90d0: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
90e0: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70  ntial)]..      p
90f0: 72 69 76 61 74 65 20 73 74 72 75 63 74 20 75 74  rivate struct ut
9100: 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 0d 0a 20  sname_interop.. 
9110: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9120: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9130: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 66 6f 6c  // NOTE: The fol
9140: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 66 69  lowing string fi
9150: 65 6c 64 73 20 73 68 6f 75 6c 64 20 62 65 20 70  elds should be p
9160: 72 65 73 65 6e 74 20 69 6e 0d 0a 20 20 20 20 20  resent in..     
9170: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
9180: 69 73 20 62 75 66 66 65 72 2c 20 61 6c 6c 20 6f  is buffer, all o
9190: 66 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20  f which will be 
91a0: 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 3a  zero-terminated:
91b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
91c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
91d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91e0: 20 20 73 79 73 6e 61 6d 65 0d 0a 20 20 20 20 20    sysname..     
91f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
9200: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64               nod
9210: 65 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  ename..         
9220: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20   //             
9230: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
9240: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9260: 20 20 20 20 76 65 72 73 69 6f 6e 0d 0a 20 20 20      version..   
9270: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
9290: 61 63 68 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  achine..        
92a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
92b0: 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
92c0: 61 67 65 64 54 79 70 65 2e 42 79 56 61 6c 41 72  agedType.ByValAr
92d0: 72 61 79 2c 20 53 69 7a 65 43 6f 6e 73 74 20 3d  ray, SizeConst =
92e0: 20 34 30 39 36 29 5d 0d 0a 20 20 20 20 20 20 20   4096)]..       
92f0: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d     public byte[]
9300: 20 62 75 66 66 65 72 3b 0d 0a 20 20 20 20 20 20   buffer;..      
9310: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9360: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
9370: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9380: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
9390: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
93a0: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
93b0: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 75 6e  e native Unix un
93c0: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ame..      /// f
93d0: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
93e0: 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74  e POSIX document
93f0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
9400: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
9410: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
9420: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9430: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9440: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9450: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
9460: 2f 2f 20 53 74 72 75 63 74 75 72 65 20 63 6f 6e  // Structure con
9470: 74 61 69 6e 69 6e 67 20 61 20 70 72 65 61 6c 6c  taining a preall
9480: 6f 63 61 74 65 64 20 62 79 74 65 20 62 75 66 66  ocated byte buff
9490: 65 72 20 74 6f 20 66 69 6c 6c 20 77 69 74 68 20  er to fill with 
94a0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72  the..      /// r
94b0: 65 71 75 65 73 74 65 64 20 69 6e 66 6f 72 6d 61  equested informa
94c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
94d0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
94e0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
94f0: 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 20 66        /// Zero f
9500: 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 6c  or success and l
9510: 65 73 73 20 74 68 61 6e 20 7a 65 72 6f 20 75 70  ess than zero up
9520: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9530: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
9540: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
9550: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
9560: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 63 22 2c  llImport("libc",
9570: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
9580: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
9590: 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  ernal",..#endif.
95a0: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
95b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
95c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
95d0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 20 20  .Cdecl)]..      
95e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
95f0: 78 74 65 72 6e 20 69 6e 74 20 75 6e 61 6d 65 28  xtern int uname(
9600: 6f 75 74 20 75 74 73 6e 61 6d 65 5f 69 6e 74 65  out utsname_inte
9610: 72 6f 70 20 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  rop name);....  
9620: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
9670: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9680: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
9690: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
96a0: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
96b0: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
96c0: 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20 20 20  Unix dlopen..   
96d0: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
96e0: 20 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20    See the POSIX 
96f0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
9700: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
9710: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
9720: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
9730: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9750: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
9760: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
9770: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
9780: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
9790: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
97a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
97b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
97c0: 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ode">..      ///
97d0: 20 54 68 69 73 20 6d 75 73 74 20 62 65 20 61 20   This must be a 
97e0: 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74  combination of t
97f0: 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 62 69  he individual bi
9800: 74 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c 41 5a  t flags RTLD_LAZ
9810: 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 54  Y,..      /// RT
9820: 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f  LD_NOW, RTLD_GLO
9830: 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54 4c 44  BAL, and/or RTLD
9840: 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20 20 2f  _LOCAL...      /
9850: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9860: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
9870: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9880: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
9890: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
98a0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
98b0: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
98c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
98d0: 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54  rns>..#if NET_ST
98e0: 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20 20  ANDARD_20..     
98f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62   [DllImport("lib
9900: 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  dl",..#else..   
9910: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
9920: 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e  _Internal",..#en
9930: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 45  dif..          E
9940: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f  ntryPoint = "dlo
9950: 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  pen",..         
9960: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9970: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9980: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
9990: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
99a0: 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20  Ansi,..         
99b0: 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20   BestFitMapping 
99c0: 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e  = false, ThrowOn
99d0: 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d  UnmappableChar =
99e0: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
99f0: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
9a00: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69   true)]..      i
9a10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9a20: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f  xtern IntPtr dlo
9a30: 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  pen(string fileN
9a40: 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d  ame, int mode);.
9a50: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9aa0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9ab0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9ac0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
9ad0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
9ae0: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
9af0: 74 69 76 65 20 55 6e 69 78 20 64 6c 63 6c 6f 73  tive Unix dlclos
9b00: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  e..      /// fun
9b10: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
9b20: 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74  POSIX documentat
9b30: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
9b40: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
9b50: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
9b60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9b70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9b80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
9b90: 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  odule">..      /
9ba0: 2f 2f 20 54 68 65 20 68 61 6e 64 6c 65 20 74 6f  // The handle to
9bb0: 20 74 68 65 20 6c 6f 61 64 65 64 20 6e 61 74 69   the loaded nati
9bc0: 76 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  ve library...   
9bd0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9be0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9bf0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9c00: 5a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  Zero upon succes
9c10: 73 20 2d 4f 52 2d 20 6e 6f 6e 2d 7a 65 72 6f 20  s -OR- non-zero 
9c20: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9c30: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
9c40: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
9c50: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
9c60: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22  llImport("libdl"
9c70: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
9c80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e  [DllImport("__In
9c90: 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66  ternal",..#endif
9ca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 45 6e 74 72  ..          Entr
9cb0: 79 50 6f 69 6e 74 20 3d 20 22 64 6c 63 6c 6f 73  yPoint = "dlclos
9cc0: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43  e",..          C
9cd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9ce0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9cf0: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 53 65 74 4c  tion.Cdecl, SetL
9d00: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
9d10: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
9d20: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9d30: 69 6e 74 20 64 6c 63 6c 6f 73 65 28 49 6e 74 50  int dlclose(IntP
9d40: 74 72 20 6d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  tr module);.... 
9d50: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9da0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
9db0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
9dc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
9dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9de0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
9df0: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
9e00: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a  nction calls laz
9e10: 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ily...      /// 
9e20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9e30: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
9e40: 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d   int RTLD_LAZY =
9e50: 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x1;....      /
9e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
9eb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9ec0: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
9ed0: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
9ee0: 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61  bind function ca
9ef0: 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  lls immediately.
9f00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9f10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
9f20: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
9f30: 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b   RTLD_NOW = 0x2;
9f40: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9fa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9fb0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
9fc0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20   dlopen(), make 
9fd0: 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79  symbols globally
9fe0: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
9ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a000: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
a010: 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  l const int RTLD
a020: 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b  _GLOBAL = 0x100;
a030: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a0a0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
a0b0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73   dlopen(), oppos
a0c0: 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42  ite of RTLD_GLOB
a0d0: 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  AL, and the defa
a0e0: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
a0f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a100: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
a110: 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20   int RTLD_LOCAL 
a120: 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20  = 0x000;....    
a130: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
a180: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a190: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
a1a0: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
a1b0: 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20  ), the defaults 
a1c0: 75 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  used by this cla
a1d0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
a1e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a1f0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
a200: 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54  int RTLD_DEFAULT
a210: 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54   = RTLD_NOW | RT
a220: 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 20 20  LD_GLOBAL;..    
a230: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a290: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a2a0: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
a2b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a2c0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
a2d0: 65 73 65 20 61 72 65 20 74 68 65 20 63 68 61 72  ese are the char
a2e0: 61 63 74 65 72 73 20 75 73 65 64 20 74 6f 20 73  acters used to s
a2f0: 65 70 61 72 61 74 65 20 74 68 65 20 73 74 72 69  eparate the stri
a300: 6e 67 20 66 69 65 6c 64 73 20 77 69 74 68 69 6e  ng fields within
a310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
a320: 72 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72  raw buffer retur
a330: 6e 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20  ned by the <see 
a340: 63 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20  cref="uname" /> 
a350: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e  P/Invoke method.
a360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
a380: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
a390: 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 75 74 73  donly char[] uts
a3a0: 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73 20 3d  NameSeparators =
a3b0: 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a 20 20 20 20   { '\0' };..    
a3c0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a3d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a420: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a430: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
a440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a450: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a460: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
a470: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
a480: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
a490: 75 6e 61 6d 65 22 20 2f 3e 20 50 2f 49 6e 76 6f  uname" /> P/Invo
a4a0: 6b 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ke..      /// me
a4b0: 74 68 6f 64 20 74 68 61 74 20 65 78 74 72 61 63  thod that extrac
a4c0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
a4d0: 68 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  he human readabl
a4e0: 65 20 73 74 72 69 6e 67 73 20 66 72 6f 6d 0d 0a  e strings from..
a4f0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 61        /// the ra
a500: 77 20 62 75 66 66 65 72 2e 0d 0a 20 20 20 20 20  w buffer...     
a510: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
a530: 6d 20 6e 61 6d 65 3d 22 75 74 73 4e 61 6d 65 22  m name="utsName"
a540: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
a550: 73 20 73 74 72 75 63 74 75 72 65 2c 20 77 68 69  s structure, whi
a560: 63 68 20 63 6f 6e 74 61 69 6e 73 20 73 74 72 69  ch contains stri
a570: 6e 67 73 2c 20 77 69 6c 6c 20 62 65 20 66 69 6c  ngs, will be fil
a580: 6c 65 64 20 62 61 73 65 64 20 6f 6e 20 74 68 65  led based on the
a590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
a5a0: 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 72   placed in the r
a5b0: 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72 6e  aw buffer return
a5c0: 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  ed by the <see c
a5d0: 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 0d 0a  ref="uname" />..
a5e0: 20 20 20 20 20 20 2f 2f 2f 20 50 2f 49 6e 76 6f        /// P/Invo
a5f0: 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ke method...    
a600: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a610: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
a620: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
a630: 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
a640: 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  cess; otherwise,
a650: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
a660: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a670: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a680: 74 69 63 20 62 6f 6f 6c 20 47 65 74 4f 73 56 65  tic bool GetOsVe
a690: 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20  rsionInfo(..    
a6a0: 20 20 20 20 20 20 72 65 66 20 75 74 73 6e 61 6d        ref utsnam
a6b0: 65 20 75 74 73 4e 61 6d 65 0d 0a 20 20 20 20 20  e utsName..     
a6c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
a6d0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
a6e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a6f0: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
a700: 6d 65 5f 69 6e 74 65 72 6f 70 20 75 74 66 4e 61  me_interop utfNa
a710: 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a 0d 0a 20 20  meInterop;....  
a720: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a730: 75 6e 61 6d 65 28 6f 75 74 20 75 74 66 4e 61 6d  uname(out utfNam
a740: 65 49 6e 74 65 72 6f 70 29 20 3c 20 30 29 0d 0a  eInterop) < 0)..
a750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a760: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a780: 20 69 66 20 28 75 74 66 4e 61 6d 65 49 6e 74 65   if (utfNameInte
a790: 72 6f 70 2e 62 75 66 66 65 72 20 3d 3d 20 6e 75  rop.buffer == nu
a7a0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a7b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a7c0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a7d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 75 66        string buf
a7e0: 66 65 72 41 73 53 74 72 69 6e 67 20 3d 20 45 6e  ferAsString = En
a7f0: 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65 74 53  coding.UTF8.GetS
a800: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
a810: 20 20 20 20 20 20 20 20 20 20 75 74 66 4e 61 6d            utfNam
a820: 65 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 29  eInterop.buffer)
a830: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a840: 20 20 20 69 66 20 28 28 62 75 66 66 65 72 41 73     if ((bufferAs
a850: 53 74 72 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 20  String == null) 
a860: 7c 7c 20 28 75 74 73 4e 61 6d 65 53 65 70 61 72  || (utsNameSepar
a870: 61 74 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ators == null)).
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a890: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a8a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a8b0: 20 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67    bufferAsString
a8c0: 20 3d 20 62 75 66 66 65 72 41 73 53 74 72 69 6e   = bufferAsStrin
a8d0: 67 2e 54 72 69 6d 28 75 74 73 4e 61 6d 65 53 65  g.Trim(utsNameSe
a8e0: 70 61 72 61 74 6f 72 73 29 3b 0d 0a 0d 0a 20 20  parators);....  
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a900: 6e 67 5b 5d 20 70 61 72 74 73 20 3d 20 62 75 66  ng[] parts = buf
a910: 66 65 72 41 73 53 74 72 69 6e 67 2e 53 70 6c 69  ferAsString.Spli
a920: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
a930: 20 20 20 20 20 20 75 74 73 4e 61 6d 65 53 65 70        utsNameSep
a940: 61 72 61 74 6f 72 73 2c 20 53 74 72 69 6e 67 53  arators, StringS
a950: 70 6c 69 74 4f 70 74 69 6f 6e 73 2e 52 65 6d 6f  plitOptions.Remo
a960: 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 29 3b  veEmptyEntries);
a970: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a980: 20 20 69 66 20 28 70 61 72 74 73 20 3d 3d 20 6e    if (parts == n
a990: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
a9a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
a9b0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
a9c0: 20 20 20 20 20 20 20 75 74 73 6e 61 6d 65 20 6c         utsname l
a9d0: 6f 63 61 6c 55 74 73 4e 61 6d 65 20 3d 20 6e 65  ocalUtsName = ne
a9e0: 77 20 75 74 73 6e 61 6d 65 28 29 3b 0d 0a 0d 0a  w utsname();....
a9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
aa00: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
aa10: 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1)..          
aa20: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
aa30: 4e 61 6d 65 2e 73 79 73 6e 61 6d 65 20 3d 20 70  Name.sysname = p
aa40: 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  arts[0];....    
aa50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
aa60: 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 32 29  rts.Length >= 2)
aa70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa80: 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65      localUtsName
aa90: 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20 70 61 72 74  .nodename = part
aaa0: 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[1];....       
aab0: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
aac0: 2e 4c 65 6e 67 74 68 20 3e 3d 20 33 29 0d 0a 20  .Length >= 3).. 
aad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aae0: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 72 65   localUtsName.re
aaf0: 6c 65 61 73 65 20 3d 20 70 61 72 74 73 5b 32 5d  lease = parts[2]
ab00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ab10: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
ab20: 67 74 68 20 3e 3d 20 34 29 0d 0a 20 20 20 20 20  gth >= 4)..     
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
ab40: 61 6c 55 74 73 4e 61 6d 65 2e 76 65 72 73 69 6f  alUtsName.versio
ab50: 6e 20 3d 20 70 61 72 74 73 5b 33 5d 3b 0d 0a 0d  n = parts[3];...
ab60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
ab70: 66 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20  f (parts.Length 
ab80: 3e 3d 20 35 29 0d 0a 20 20 20 20 20 20 20 20 20  >= 5)..         
ab90: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74           localUt
aba0: 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 20 3d 20  sName.machine = 
abb0: 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d 0a 20 20 20  parts[4];....   
abc0: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61             utsNa
abd0: 6d 65 20 3d 20 6c 6f 63 61 6c 55 74 73 4e 61 6d  me = localUtsNam
abe0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
abf0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
ac00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ac10: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
ac20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ac30: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
ac40: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
ac50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ac60: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
ac70: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
ac80: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
ac90: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
aca0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
acb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
ad00: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
ad10: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
ad20: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69  Static Class (Wi
ad30: 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  n32)..  /// <sum
ad40: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
ad50: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
ad60: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
ad70: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
ad80: 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20   Win32 APIs...  
ad90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ada0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
adb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
adc0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
add0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
ade0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
adf0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
ae00: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
ae10: 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b  ethodsWin32..  {
ae20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
ae30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
ae80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ae90: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
aea0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
aeb0: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
aec0: 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69  ive Win32 LoadLi
aed0: 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
aee0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
aef0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
af00: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
af10: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
af20: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
af30: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
af40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
af50: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
af60: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
af70: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
af80: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
af90: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
afa0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
afb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
afc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
afd0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
afe0: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
aff0: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
b000: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
b010: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
b020: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50  returns>..#if !P
b030: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b040: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
b050: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e  [DllImport("kern
b060: 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20  el32",..#else.. 
b070: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
b080: 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64  "coredll",..#end
b090: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61  if..          Ca
b0a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b0b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b0c0: 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72  ion.Winapi, Char
b0d0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75  Set = CharSet.Au
b0e0: 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  to,..#if !PLATFO
b0f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b100: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42  ORK..          B
b110: 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20  estFitMapping = 
b120: 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e  false, ThrowOnUn
b130: 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74  mappableChar = t
b140: 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue,..#endif..  
b150: 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45          SetLastE
b160: 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20  rror = true)].. 
b170: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
b180: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b190: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73  tr LoadLibrary(s
b1a0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b  tring fileName);
b1b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b200: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
b210: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b220: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
b230: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
b240: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
b250: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 47 65   native Win32 Ge
b260: 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20  tSystemInfo..   
b270: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
b280: 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64    See the MSDN d
b290: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
b2a0: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
b2b0: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
b2c0: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
b2d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
b2e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
b2f0: 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e  m name="systemIn
b300: 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fo">..      /// 
b310: 54 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  The system infor
b320: 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65  mation structure
b330: 20 74 6f 20 62 65 20 66 69 6c 6c 65 64 20 69 6e   to be filled in
b340: 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   by the function
b350: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
b360: 61 72 61 6d 3e 0d 0a 23 69 66 20 21 50 4c 41 54  aram>..#if !PLAT
b370: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b380: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c  EWORK..      [Dl
b390: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
b3a0: 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  2",..#else..    
b3b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
b3c0: 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  redll",..#endif.
b3d0: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
b3e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b3f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b400: 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20  .Winapi)]..     
b410: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b420: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
b430: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
b440: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
b450: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
b460: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
b4b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b4c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
b4d0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
b4e0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
b4f0: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
b500: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
b510: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
b520: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
b530: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
b540: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
b550: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b560: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
b570: 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73  nal enum Process
b580: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a  orArchitecture :
b590: 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41   ushort /* COMPA
b5a0: 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20  T: Win32. */..  
b5b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b5c0: 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20   Intel = 0,..   
b5d0: 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c         MIPS = 1,
b5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68  ..          Alph
b5f0: 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20  a = 2,..        
b600: 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a    PowerPC = 3,..
b610: 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20            SHx = 
b620: 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52  4,..          AR
b630: 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20  M = 5,..        
b640: 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20    IA64 = 6,..   
b650: 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d         Alpha64 =
b660: 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d   7,..          M
b670: 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20  SIL = 8,..      
b680: 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a      AMD64 = 9,..
b690: 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f            IA32_o
b6a0: 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20  n_Win64 = 10,.. 
b6b0: 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e           Unknown
b6c0: 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20   = 0xFFFF..     
b6d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b720: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
b730: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b740: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63    /// This struc
b750: 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e  ture contains in
b760: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
b770: 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70  the current comp
b780: 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20  uter. This..    
b790: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74    /// includes t
b7a0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70  he processor typ
b7b0: 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65  e, page size, me
b7c0: 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20  mory addresses, 
b7d0: 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  etc...      /// 
b7e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b7f0: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
b800: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
b810: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69  ntial)]..      i
b820: 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53  nternal struct S
b830: 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20  YSTEM_INFO..    
b840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70    {..          p
b850: 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41  ublic ProcessorA
b860: 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f  rchitecture wPro
b870: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b880: 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70  re;..          p
b890: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65  ublic ushort wRe
b8a0: 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55  served; /* NOT U
b8b0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
b8c0: 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77    public uint dw
b8d0: 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54  PageSize; /* NOT
b8e0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
b8f0: 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
b900: 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69  r lpMinimumAppli
b910: 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f  cationAddress; /
b920: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
b930: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
b940: 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d  IntPtr lpMaximum
b950: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
b960: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
b970: 2a 2f 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  */..#if PLATFORM
b980: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b990: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  K..          pub
b9a0: 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76  lic uint dwActiv
b9b0: 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20  eProcessorMask; 
b9c0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
b9d0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
b9e0: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 64   public IntPtr d
b9f0: 77 41 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72  wActiveProcessor
ba00: 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Mask; /* NOT USE
ba10: 44 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  D */..#endif..  
ba20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
ba30: 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72  int dwNumberOfPr
ba40: 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54  ocessors; /* NOT
ba50: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
ba60: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
ba70: 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b  dwProcessorType;
ba80: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
ba90: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
baa0: 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74  c uint dwAllocat
bab0: 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20  ionGranularity; 
bac0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
bad0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
bae0: 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73   ushort wProcess
baf0: 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20  orLevel; /* NOT 
bb00: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
bb10: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
bb20: 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73   wProcessorRevis
bb30: 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ion; /* NOT USED
bb40: 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20   */..      }..  
bb50: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
bb60: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
bb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbb0: 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
bbc0: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
bbd0: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
bbe0: 20 43 6c 61 73 73 20 28 53 51 4c 69 74 65 29 0d   Class (SQLite).
bbf0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
bc00: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
bc10: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
bc20: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
bc30: 63 61 6c 6c 20 6e 61 74 69 76 65 20 53 51 4c 69  call native SQLi
bc40: 74 65 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20  te APIs...  /// 
bc50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
bc60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bc70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53  TFRAMEWORK..  [S
bc80: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
bc90: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
bca0: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
bcb0: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
bcc0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
bcd0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70  ds..  {..      p
bce0: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
bcf0: 6e 67 20 45 78 63 65 70 74 69 6f 6e 4d 65 73 73  ng ExceptionMess
bd00: 61 67 65 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20  ageFormat =..   
bd10: 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
bd20: 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30  xception in \"{0
bd30: 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22  }\" method: {1}"
bd40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd90: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
bda0: 65 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74  egion Shared Nat
bdb0: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
bdc0: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
bdd0: 6f 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69  ode..      #regi
bde0: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
bdf0: 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ants..      /// 
be00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
be10: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78   /// The file ex
be20: 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  tension used for
be30: 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
be40: 62 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  braries...      
be50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
be60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
be70: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
be80: 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65  ring DllFileExte
be90: 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d  nsion = ".dll";.
bea0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
beb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
bf00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
bf10: 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65  // The file exte
bf20: 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  nsion used for t
bf30: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
bf40: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
bf50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
bf60: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
bf70: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
bf80: 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c  string ConfigFil
bf90: 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63  eExtension = ".c
bfa0: 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20  onfig";....     
bfb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
c000: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c010: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c020: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
c030: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
c040: 74 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66  tion file specif
c050: 69 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ic to the..     
c060: 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61   /// System.Data
c070: 2e 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79  .SQLite assembly
c080: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c090: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
c0a0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
c0b0: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d  adonly string Xm
c0c0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
c0d0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79 70  =..          typ
c0e0: 65 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65  eof(UnsafeNative
c0f0: 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61  Methods).Namespa
c100: 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65  ce + DllFileExte
c110: 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20  nsion +..       
c120: 20 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74     ConfigFileExt
c130: 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20  ension;....     
c140: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
c190: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c1a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c1b0: 69 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  is the XML confi
c1c0: 67 75 72 61 74 72 69 6f 6e 20 66 69 6c 65 20 74  guratrion file t
c1d0: 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62  oken that will b
c1e0: 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d  e replaced with.
c1f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71  .      /// the q
c200: 75 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f  ualified path to
c210: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
c220: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 58 4d  ontaining the XM
c230: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  L configuration.
c240: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e  .      /// file.
c250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c260: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
c270: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
c280: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c  donly string Xml
c290: 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54  ConfigDirectoryT
c2a0: 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  oken =..        
c2b0: 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74    "%PreLoadSQLit
c2c0: 65 5f 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63  e_XmlConfigDirec
c2d0: 74 6f 72 79 25 22 3b 0d 0a 20 20 20 20 20 20 23  tory%";..      #
c2e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
c2f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c340: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
c350: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 20  ivate Constants 
c360: 28 44 65 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f  (Desktop Framewo
c370: 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50  rk Only)..#if !P
c380: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c390: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
c3a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c3b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
c3c0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
c3d0: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
c3e0: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
c3f0: 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20  laced with..    
c400: 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66    /// the qualif
c410: 69 65 64 20 70 61 74 68 20 74 6f 20 74 68 65 20  ied path to the 
c420: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
c430: 6e 69 6e 67 20 74 68 69 73 20 61 73 73 65 6d 62  ning this assemb
c440: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
c450: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c460: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
c470: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
c480: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
c490: 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20  yToken =..      
c4a0: 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c      "%PreLoadSQL
c4b0: 69 74 65 5f 41 73 73 65 6d 62 6c 79 44 69 72 65  ite_AssemblyDire
c4c0: 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20  ctory%";....    
c4d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
c520: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
c540: 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d   is the environm
c550: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
c560: 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20  en that will be 
c570: 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 61 6e  replaced with an
c580: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 62 62 72  ..      /// abbr
c590: 65 76 69 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  eviation of the 
c5a0: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
c5b0: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
c5c0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
c5d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73  ..      /// this
c5e0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
c5f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c600: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
c610: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
c620: 73 74 72 69 6e 67 20 54 61 72 67 65 74 46 72 61  string TargetFra
c630: 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20  meworkToken =.. 
c640: 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f           "%PreLo
c650: 61 64 53 51 4c 69 74 65 5f 54 61 72 67 65 74 46  adSQLite_TargetF
c660: 72 61 6d 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e  ramework%";..#en
c670: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
c680: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
c6e0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
c6f0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
c700: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c710: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b     /// This lock
c720: 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74   is used to prot
c730: 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20 5f  ect the static _
c740: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
c750: 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  leFileName,..   
c760: 20 20 20 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61     /// _SQLiteNa
c770: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
c780: 2c 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 41  , and processorA
c790: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
c7a0: 6f 72 6d 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20  orms fields...  
c7b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c7c0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
c7d0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
c7e0: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
c7f0: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
c800: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
c810: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
c860: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c870: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c880: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
c890: 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62  s the mappings b
c8a0: 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72  etween processor
c8b0: 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
c8c0: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61       /// names a
c8d0: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  nd platform name
c8e0: 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e  s.  These mappin
c8f0: 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20  gs are now used 
c900: 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f  for two..      /
c910: 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69  // purposes.  Fi
c920: 72 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73  rst, they are us
c930: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
c940: 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  if the assembly 
c950: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
c960: 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75  base should be u
c970: 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
c980: 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73  he location, bas
c990: 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20  ed upon whether 
c9a0: 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  one..      /// o
c9b0: 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61  r more of the na
c9c0: 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72  med sub-director
c9d0: 69 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e  ies exist within
c9e0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
c9f0: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
ca00: 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65  se.  Second, the
ca10: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73  y are used to as
ca20: 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20  sist in loading 
ca30: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
ca40: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  .      /// SQLit
ca50: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
ca60: 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72  ly into the curr
ca70: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
ca80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ca90: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
caa0: 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e  e static Diction
cab0: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
cac0: 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ng> processorArc
cad0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
cae0: 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ms;....      ///
caf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
cb40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cb50: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
cb60: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
cb70: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
cb80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
cb90: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
cba0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
cbb0: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
cbc0: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
cbd0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
cbe0: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
cbf0: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
cc00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cc10: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
cc20: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
cc30: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
cc40: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
cc50: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
cca0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ccb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
ccc0: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
ccd0: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
cce0: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
ccf0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
cd00: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
cd10: 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ory" /> method w
cd20: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
cd30: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
cd40: 2f 2f 20 73 75 69 74 61 62 6c 65 20 61 73 73 65  // suitable asse
cd50: 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 20  mbly directory. 
cd60: 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
cd70: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
cd80: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
cd90: 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
cda0: 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68 69 73   will check this
cdb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c  ..      /// fiel
cdc0: 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c  d and skips call
cdd0: 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20  s into the <see 
cde0: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
cdf0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a  yDirectory" />..
ce00: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
ce10: 20 77 68 65 6e 65 76 65 72 20 69 74 20 69 73 20   whenever it is 
ce20: 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  non-zero...     
ce30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ce40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
ce50: 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73  tatic bool noAss
ce60: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
ce70: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ceb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cec0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
ced0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cee0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 63  // This is the c
cef0: 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61 6c  ached return val
cf00: 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ue from the..   
cf10: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
cf20: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
cf30: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
cf40: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74  d -OR- null if t
cf50: 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  hat method..    
cf60: 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72 20    /// has never 
cf70: 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69 64  returned a valid
cf80: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
cf90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
cfa0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
cfb0: 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68 65  tic string cache
cfc0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
cfd0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  me;....      ///
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
d030: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d040: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73     /// When this
d050: 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65   field is non-ze
d060: 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65 73  ro, it indicates
d070: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
d080: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d090: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d0a0: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 6e   /> method was n
d0b0: 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74  ot able to locat
d0c0: 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  e a..      /// s
d0d0: 75 69 74 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66  uitable XML conf
d0e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
d0f0: 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20 20 20 20  ame.  The..     
d100: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
d110: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
d120: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
d130: 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b  ethod will check
d140: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   this..      ///
d150: 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73   field and skips
d160: 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20   calls into the 
d170: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d180: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d190: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d   />..      /// m
d1a0: 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69  ethod whenever i
d1b0: 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a  t is non-zero...
d1c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d1d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
d1e0: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
d1f0: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
d200: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ame;..      #end
d210: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
d220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d270: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d280: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f        /// For no
d290: 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73  w, this method s
d2a0: 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20  imply calls the 
d2b0: 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f  Initialize metho
d2c0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
d2d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d2e0: 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74  static UnsafeNat
d2f0: 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20  iveMethods()..  
d300: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d310: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a   Initialize();..
d320: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d330: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
d380: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d390: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
d3a0: 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  pts to initializ
d3b0: 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79 20  e this class by 
d3c0: 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20  pre-loading the 
d3d0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
d3e0: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
d3f0: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
d400: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
d410: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
d420: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
d430: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d440: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
d450: 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61  atic void Initia
d460: 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lize()..      {.
d470: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
d480: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
d490: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
d4a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d4b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
d4c0: 20 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74   Create the list
d4d0: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
d4e0: 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69  that will contai
d4f0: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  n..          // 
d500: 20 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f        various co
d510: 75 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62  unts used in deb
d520: 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e  ugging, includin
d530: 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  g the..         
d540: 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72   //       number
d550: 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73   of times each s
d560: 65 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73  etting value has
d570: 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20   been read...   
d580: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d590: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
d5a0: 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65  nitialize();..#e
d5b0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
d5c0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d5d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d5e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
d5f0: 68 65 63 6b 20 69 66 20 61 20 64 65 62 75 67 67  heck if a debugg
d600: 65 72 20 6e 65 65 64 73 20 74 6f 20 62 65 20 61  er needs to be a
d610: 74 74 61 63 68 65 64 20 62 65 66 6f 72 65 20 64  ttached before d
d620: 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20 20 20 20  oing any..      
d630: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 61      //       rea
d640: 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  l work...       
d650: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d660: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4d   HelperMethods.M
d670: 61 79 62 65 42 72 65 61 6b 49 6e 74 6f 44 65 62  aybeBreakIntoDeb
d680: 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  ugger();....#if 
d690: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
d6a0: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
d6b0: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
d6c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d6d0: 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
d6e0: 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
d6f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d700: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
d710: 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64   the "No_PreLoad
d720: 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d  SQLite" environm
d730: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
d740: 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20  set (to..       
d750: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74     //       anyt
d760: 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20  hing), skip all 
d770: 6f 66 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63  of our special c
d780: 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72  ode and simply r
d790: 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eturn...        
d7a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d7b0: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
d7c0: 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  lue("No_PreLoadS
d7d0: 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d  QLite", null) !=
d7e0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
d7f0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23        return;..#
d800: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
d810: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
d820: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
d830: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
d850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
d860: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
d870: 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20 75  e this list is u
d880: 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73 75  pdated if the su
d890: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20  pported..       
d8a0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d8b0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
d8c0: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
d8d0: 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  /or platform nam
d8e0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
d8f0: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67    //       chang
d900: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
d910: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d920: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
d930: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
d940: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
d950: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d960: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d970: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d980: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
d990: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d  TE: Create the m
d9a0: 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20  ap of processor 
d9b0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
d9c0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
d9d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
d9e0: 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  o platform names
d9f0: 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e   using a case-in
da00: 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67  sensitive string
da10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da20: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d      //       com
da30: 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  parer...        
da40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
da50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da60: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
da70: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
da80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da90: 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63 74          new Dict
daa0: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
dab0: 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20  tring>(..       
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65     StringCompare
dae0: 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  r.OrdinalIgnoreC
daf0: 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
db00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db20: 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20   // NOTE: Setup 
db30: 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74  the list of plat
db40: 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63  form names assoc
db50: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
db70: 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70 6f         the suppo
db80: 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  rted processor a
db90: 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20  rchitectures... 
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbb0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dbc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
dbd0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
dbe0: 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c  forms.Add("x86",
dbf0: 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20   "Win32");..    
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
dc10: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
dc20: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
dc30: 28 22 78 38 36 5f 36 34 22 2c 20 22 78 36 34 22  ("x86_64", "x64"
dc40: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
dc50: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
dc60: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
dc70: 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22  orms.Add("AMD64"
dc80: 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20  , "x64");..     
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
dca0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
dcb0: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
dcc0: 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d  "IA64", "Itanium
dcd0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
dce0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
dcf0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
dd00: 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c  forms.Add("ARM",
dd10: 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20   "WinCE");..    
dd20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23            }....#
dd30: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
dd40: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
dd50: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
dd60: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd70: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
dd80: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddb0: 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20  // BUGBUG: What 
ddc0: 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c  about other appl
ddd0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f  ication domains?
dde0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
de00: 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74    if (_SQLiteNat
de10: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
de20: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
de30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
de40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de50: 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44      string baseD
de60: 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
de70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de80: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
de90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
dea0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
dec0: 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74   allowBaseDirect
ded0: 6f 72 79 4f 6e 6c 79 20 3d 20 66 61 6c 73 65 3b  oryOnly = false;
dee0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
def0: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
df00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
df10: 20 20 20 20 20 20 20 53 65 61 72 63 68 46 6f 72         SearchFor
df20: 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 20 20 72 65 66 20 62 61 73 65 44 69 72 65 63 74    ref baseDirect
df50: 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65 73 73  ory, ref process
df60: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
df70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df80: 20 20 20 20 20 20 20 72 65 66 20 61 6c 6c 6f 77         ref allow
df90: 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
dfa0: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
dfb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dfd0: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
dfe0: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
dff0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
e000: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
e010: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
e020: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
e030: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
e040: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
e050: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
e060: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
e070: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
e080: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
e090: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
e0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0e0: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
e0f0: 44 6c 6c 28 62 61 73 65 44 69 72 65 63 74 6f 72  Dll(baseDirector
e100: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
e110: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
e120: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
e130: 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74   allowBaseDirect
e140: 6f 72 79 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20  oryOnly,..      
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e160: 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ref _SQLiteNativ
e170: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
e180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e190: 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c          ref _SQL
e1a0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
e1b0: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
e1c0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
e1d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e1e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
e1f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
e200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e240: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
e250: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
e260: 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70  / Combines two p
e270: 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  ath strings...  
e280: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e290: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
e2a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31  aram name="path1
e2b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
e2c0: 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52  e first path -OR
e2d0: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
e2e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e2f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e300: 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20  me="path2">..   
e310: 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e     /// The secon
e320: 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c  d path -OR- null
e330: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
e340: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
e350: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e360: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e    /// The combin
e370: 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d  ed path string -
e380: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68  OR- null if both
e390: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
e3a0: 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   path..      ///
e3b0: 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c   strings are nul
e3c0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
e3d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e3e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
e3f0: 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69  tring MaybeCombi
e400: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
e410: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c     string path1,
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
e430: 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20  ng path2..      
e440: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
e450: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
e460: 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th1 != null)..  
e470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e480: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
e490: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e4b0: 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69  eturn Path.Combi
e4c0: 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32 29  ne(path1, path2)
e4d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e4e0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
e4f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e500: 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20  path1;..        
e510: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
e520: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  lse..          {
e530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e540: 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c  if (path2 != nul
e550: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e560: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
e570: 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h2;..           
e580: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
e590: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e5a0: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
e5b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
e5c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
e5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e610: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e630: 20 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68   Resets the cach
e640: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
e650: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76  tion file name v
e660: 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69  alue, thus forci
e670: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ng the..      //
e680: 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f 20 3c  / next call to <
e690: 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61 63  see cref="GetCac
e6a0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
e6b0: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
e6c0: 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f  to rely..      /
e6d0: 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65  // upon the <see
e6e0: 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e   cref="GetXmlCon
e6f0: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
e700: 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20  method to fetch 
e710: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 58  the..      /// X
e720: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
e730: 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   file name...   
e740: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e750: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
e760: 20 73 74 61 74 69 63 20 76 6f 69 64 20 52 65 73   static void Res
e770: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
e780: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
e790: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e7a0: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
e7b0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
e7c0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
e7d0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
e7e0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
e7f0: 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68 65 64  thod_ResetCached
e800: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
e810: 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  e");..#endif..  
e820: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
e830: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
e840: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
e850: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
e860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e870: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
e880: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  gFileName = null
e890: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e8a0: 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65   noXmlConfigFile
e8b0: 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  Name = false;.. 
e8c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e8d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e920: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
e930: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e940: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
e950: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 63  nd returns the c
e960: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
e970: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
e980: 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  e for the..     
e990: 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 63 6f   /// assembly co
e9a0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e  ntaining the man
e9b0: 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61  aged System.Data
e9c0: 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e  .SQLite componen
e9d0: 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ts, if..      //
e9e0: 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49 66  / available.  If
e9f0: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
ea00: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
ea10: 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20 69 73  le name value is
ea20: 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
ea30: 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c  available, the <
ea40: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
ea50: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
ea60: 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a  /> method will..
ea70: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65        /// be use
ea80: 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20  d to obtain the 
ea90: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
eaa0: 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20  n file name...  
eab0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
eac0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
ead0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
eae0: 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69  // The XML confi
eaf0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
eb00: 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  me -OR- null if 
eb10: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
eb20: 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f  ermined..      /
eb30: 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65  // or does not e
eb40: 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  xist...      ///
eb50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
eb60: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
eb70: 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63 68  c string GetCach
eb80: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
eb90: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
eba0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
ebb0: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
ebc0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
ebd0: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
ebe0: 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
ebf0: 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47  rCount("Method_G
ec00: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
ec10: 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65  gFileName");..#e
ec20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ec30: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ec40: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
ec50: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
ec60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ec70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
ec80: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
ec90: 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
eca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecb0: 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64 58    return cachedX
ecc0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
ecd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ece0: 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f 6e 66     if (noXmlConf
ecf0: 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20 20 20  igFileName)..   
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ed10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
ed20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ed30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
ed40: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
ed50: 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  e();..      }...
ed60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
edc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
edd0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
ede0: 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e  urns the XML con
edf0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
ee00: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73  name for the ass
ee10: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  embly..      ///
ee20: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
ee30: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
ee40: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
ee50: 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  nents...      //
ee60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ee70: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
ee80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
ee90: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
eea0: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52  on file name -OR
eeb0: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
eec0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
eed0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  d..      /// or 
eee0: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d  does not exist..
eef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
ef00: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
ef10: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
ef20: 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  ng GetXmlConfigF
ef30: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
ef40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
ef50: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
ef60: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
ef70: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
ef80: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
ef90: 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
efa0: 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  od_GetXmlConfigF
efb0: 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64  ileName");..#end
efc0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
efd0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
efe0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
eff0: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
f000: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
f010: 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  me;....#if !PLAT
f020: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f030: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
f040: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70 70   directory = App
f050: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
f060: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
f070: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ry;..          f
f080: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
f090: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
f0a0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
f0b0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
f0c0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
f0d0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
f0e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
f100: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
f110: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
f120: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f130: 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58 6d          cachedXm
f140: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
f150: 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
f160: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
f170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f180: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
f190: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
f1a0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
f1b0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
f1c0: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
f1d0: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
f1e0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
f1f0: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
f200: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c  h(directory, Xml
f210: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
f220: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
f230: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
f240: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
f250: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f260: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
f270: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
f280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
f2a0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
f2b0: 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d  leName = fileNam
f2c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
f2d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
f2e0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
f2f0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
f300: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f310: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
f320: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
f330: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f340: 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c    noXmlConfigFil
f350: 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d 0a 20  eName = true;.. 
f360: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
f370: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
f380: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
f390: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
f3f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
f400: 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c  // If necessary,
f410: 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75   replaces all su
f420: 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f 6e 66  pported XML conf
f430: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
f440: 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  okens..      ///
f450: 20 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f   with their asso
f460: 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a  ciated values...
f470: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f480: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f490: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
f4a0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
f4b0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
f4c0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f4d0: 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e 67 20  tion file being 
f4e0: 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  read...      ///
f4f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
f500: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
f510: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
f520: 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76   /// A setting v
f530: 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 74  alue read from t
f540: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f550: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
f560: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f570: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
f580: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
f590: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
f5a0: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
f5b0: 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61  value" /> will a
f5c0: 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c  ll supported XML
f5d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
f5e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
f5f0: 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20  okens replaced. 
f600: 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65   No return value
f610: 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20   is reserved..  
f620: 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63      /// to indic
f630: 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54  ate an error.  T
f640: 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f  his method canno
f650: 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f  t fail...      /
f660: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
f670: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
f680: 74 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61  tic string Repla
f690: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
f6a0: 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20  okens(..        
f6b0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
f6c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e,..          st
f6d0: 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
f6e0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
f6f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
f700: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
f710: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
f720: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f730: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
f740: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
f750: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f780: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
f790: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7b0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
f7c0: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
f7d0: 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65  rectoryName(file
f7e0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
f7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f800: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
f810: 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
f820: 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ory))..         
f830: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f850: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
f860: 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
f870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f890: 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f  XmlConfigDirecto
f8a0: 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f  ryToken, directo
f8b0: 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
f8c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8e0: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
f8f0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f900: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
f910: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
f920: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
f930: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
f940: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
f950: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
f960: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
f970: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
f980: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
f990: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
f9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9b0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
f9f0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
fa00: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
fa10: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
fa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa30: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
fa40: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
fa50: 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61  e, "Native libra
fa60: 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ry " +..        
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa80: 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65        "pre-loade
fa90: 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c  r failed to repl
faa0: 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20 20 20  ace XML " +..   
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fac0: 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66             "conf
fad0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c  iguration file \
fae0: 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20 7b  "{0}\" tokens: {
faf0: 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb10: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29      fileName, e)
fb20: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
fb60: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb90: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
fba0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
fbc0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
fbf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
fc00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fc10: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
fc20: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
fc80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
fc90: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
fca0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c   returns the val
fcb0: 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ue of the specif
fcc0: 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69  ied setting, usi
fcd0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ng the..      //
fce0: 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d 4c 20  / specified XML 
fcf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
fd00: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
fd10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
fd20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
fd30: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
fd40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
fd50: 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66   of the XML conf
fd60: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
fd70: 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o read...      /
fd80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fd90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
fda0: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
fdb0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
fdc0: 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a  f the setting...
fdd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
fde0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
fdf0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75  aram name="defau
fe00: 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lt">..      /// 
fe10: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20  The value to be 
fe20: 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20  returned if the 
fe30: 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20  setting has not 
fe40: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
fe50: 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  tly..      /// o
fe60: 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  r cannot be dete
fe70: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
fe80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fe90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
fea0: 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a 20 20  me="expand">..  
feb0: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
fec0: 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79 20 65   to expand any e
fed0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
fee0: 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73 20 63  ble references c
fef0: 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20  ontained in..   
ff00: 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74 74 69     /// the setti
ff10: 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  ng value to be r
ff20: 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73 20 68  eturned.  This h
ff30: 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
ff40: 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20  the .NET..      
ff50: 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  /// Compact Fram
ff60: 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f  ework...      //
ff70: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ff80: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
ff90: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
ffa0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74  alue of the sett
ffb0: 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66  ing -OR- the def
ffc0: 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69  ault value speci
ffd0: 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  fied by..      /
ffe0: 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
fff0: 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69  e="default" /> i
10000 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65  f it has not bee
10010 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
10020 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   or..      /// c
10030 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
10040 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
10050 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10060 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10070 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69   string GetSetti
10080 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e  ngValueViaXmlCon
10090 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20  figFile(..      
100a0 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
100b0 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ame, /* in */.. 
100c0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
100d0 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69 6e 20  name,     /* in 
100e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  */..          st
100f0 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c 20 2f  ring @default, /
10100 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
10110 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 20     bool expand  
10120 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
10130 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10140 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
10150 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
10170 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e   ((fileName == n
10180 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20 3d 3d  ull) || (name ==
10190 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
101a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
101b0 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20  n @default;.... 
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
101d0 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e  Document documen
101e0 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d  t = new XmlDocum
101f0 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ent();....      
10200 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
10210 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b  .Load(fileName);
10220 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a   /* throw */....
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
10240 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74  lElement element
10250 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65   = document.Sele
10260 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20  ctSingleNode(.. 
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10280 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
10290 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
102a0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
102b0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
102c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 63               "/c
102d0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70  onfiguration/app
102e0 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65  Settings/add[@ke
102f0 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29  y='{0}']", name)
10300 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ) as..          
10310 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
10320 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  nt; /* throw */.
10330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10340 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20   if (element != 
10350 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10360 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10370 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
10380 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
10390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103a0 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e      if (element.
103b0 48 61 73 41 74 74 72 69 62 75 74 65 28 22 76 61  HasAttribute("va
103c0 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  lue"))..        
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
103e0 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65  lue = element.Ge
103f0 74 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  tAttribute("valu
10400 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e");....        
10410 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
10420 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
10430 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
10440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10480 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61          if (expa
10490 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nd)..           
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
104b0 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
104c0 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e  nt.ExpandEnviron
104d0 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61  mentVariables(va
104e0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue);....       
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10500 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e  alue = ReplaceEn
10510 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
10520 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d  eTokens(value);.
10530 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
10540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10550 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
10560 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b  XmlConfigFileTok
10570 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20 76 61  ens(fileName, va
10580 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
10590 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
105c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
105d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
105e0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
105f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10600 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
10610 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
10620 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
10630 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
10640 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
10650 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
10660 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
10670 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
10680 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
10690 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
106a0 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
106b0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
106c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
106d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
106e0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
106f0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
10700 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
10730 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
10740 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
10750 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
10760 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
10770 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67  ader failed to g
10780 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b 30 7d  et setting \"{0}
10790 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a 20 20  \" value " +..  
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20 63 6f      "from XML co
107c0 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
107d0 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c 20   \"{1}\": {2}", 
107e0 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  name,..         
107f0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
10800 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74  eName, e)); /* t
10810 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
10820 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10830 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10860 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
10870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10880 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
10890 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
108a0 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
108b0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ult;..      }...
108c0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
108d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10920 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10930 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
10940 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10950 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64  // Attempts to d
10960 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 61 72  etermine the tar
10970 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
10980 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 74 68  tribute value th
10990 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  at is..      ///
109a0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
109b0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
109c0 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79 2c  anaged assembly,
109d0 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d   if applicable..
109e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
109f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
10a00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 73   <param name="as
10a10 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20 20 20  sembly">..      
10a20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
10a30 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65 61 64  assembly to read
10a40 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d   the target fram
10a50 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
10a60 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
10a70 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f   from...      //
10a80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10a90 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10aa0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
10ab0 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61 72 67  alue of the targ
10ac0 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74  et framework att
10ad0 72 69 62 75 74 65 20 76 61 6c 75 65 20 66 6f 72  ribute value for
10ae0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
10af0 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65        /// manage
10b00 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52 2d 20  d assembly -OR- 
10b10 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
10b20 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
10b30 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20    If this..     
10b40 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 77 61   /// assembly wa
10b50 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
10b60 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  a version of the
10b70 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
10b80 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20  prior to..      
10b90 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e 30 2c  /// version 4.0,
10ba0 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
10bb0 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63 74 20  ned MAY reflect 
10bc0 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20  that version of 
10bd0 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20  the .NET..      
10be0 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20 69 6e  /// Framework in
10bf0 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f 6e 65  stead of the one
10c00 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
10c10 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
10c20 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20 2f 2f  anaged..      //
10c30 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  / assembly...   
10c40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10c50 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
10c60 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
10c70 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74  etAssemblyTarget
10c80 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20  Framework(..    
10c90 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
10ca0 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20  ssembly..       
10cb0 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
10cc0 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
10cd0 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  embly != null)..
10ce0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
10cf0 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34   NET_40 || NET_4
10d00 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
10d10 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
10d20 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
10d30 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
10d40 37 20 7c 7c 20 4e 45 54 5f 34 37 31 20 7c 7c 20  7 || NET_471 || 
10d50 4e 45 54 5f 34 37 32 20 7c 7c 20 4e 45 54 5f 53  NET_472 || NET_S
10d60 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20  TANDARD_20..    
10d70 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10da0 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49    if (assembly.I
10db0 73 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20  sDefined(..     
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dd0 20 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67       typeof(Targ
10de0 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69  etFrameworkAttri
10df0 62 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a  bute), false))..
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10e20 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
10e30 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
10e40 75 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77  ute targetFramew
10e50 6f 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ork =..         
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e70 20 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72   (TargetFramewor
10e80 6b 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20  kAttribute)..   
10e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ea0 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e         assembly.
10eb0 47 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75  GetCustomAttribu
10ec0 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tes(..          
10ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ee0 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
10ef0 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
10f00 75 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b  ute), false)[0];
10f10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10f20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10f30 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
10f40 2e 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d  .FrameworkName;.
10f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10f60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10f70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10f80 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
10f90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
10fb0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
10fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10fd0 23 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20  #elif NET_35..  
10fe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10ff0 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72  rn ".NETFramewor
11000 6b 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b  k,Version=v3.5";
11010 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a  ..#elif NET_20..
11020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11030 74 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77  turn ".NETFramew
11040 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30  ork,Version=v2.0
11050 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  ";..#endif..    
11060 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11070 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
11080 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
11090 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
110a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
110e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
110f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11100 41 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74  Accepts a long t
11110 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
11120 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
11130 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74  and makes it int
11140 6f 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d  o a..      /// m
11150 75 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73  uch shorter vers
11160 69 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f  ion, suitable fo
11170 72 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74  r use with NuGet
11180 20 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20   packages...    
11190 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
111a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
111b0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
111c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
111d0 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d  long target fram
111e0 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
111f0 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
11200 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
11210 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
11220 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
11230 20 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20    /// The short 
11240 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
11250 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
11260 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
11270 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   cannot..      /
11280 2f 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  // be determined
11290 20 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a   or converted...
112a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
112b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
112c0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
112d0 67 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67  g AbbreviateTarg
112e0 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
112f0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
11300 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
11310 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
11320 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
11330 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
11340 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
11350 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
11360 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
11370 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
11380 65 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d  eplace(".NETFram
11390 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22  ework,Version=v"
113a0 2c 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20  , "net");..     
113b0 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
113c0 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20  ue.Replace(".", 
113d0 53 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a  String.Empty);..
113e0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
113f0 69 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e  index = value.In
11400 64 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20  dexOf(',');.... 
11410 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64           if (ind
11420 65 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20  ex != -1)..     
11430 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11440 20 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67   value.Substring
11450 28 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20  (0, index);.... 
11460 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11470 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
11480 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
11490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
114e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
114f0 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
11500 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
11510 73 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f  supported enviro
11520 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74  nment variable t
11530 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  okens..      ///
11540 20 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f   with their asso
11550 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a  ciated values...
11560 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11570 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11580 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
11590 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ue">..      /// 
115a0 41 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  A setting value 
115b0 72 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76  read from an env
115c0 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
115d0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
115e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
115f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
11600 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
11610 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65   of the <paramre
11620 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f  f name="value" /
11630 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f  > will all suppo
11640 72 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rted..      /// 
11650 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
11660 61 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c  able tokens repl
11670 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e  aced.  No return
11680 20 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76   value is reserv
11690 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ed..      /// to
116a0 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72   indicate an err
116b0 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64  or.  This method
116c0 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20   cannot fail... 
116d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
116e0 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
116f0 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
11700 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d   ReplaceEnvironm
11710 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e  entVariableToken
11720 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
11730 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
11740 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
11750 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
11760 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
11770 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
11780 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11790 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
117a0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
117b0 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
117c0 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
117d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
117e0 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
117f0 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29  Empty(directory)
11800 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11820 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11830 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11850 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
11860 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20  lue.Replace(..  
11870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11880 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
11890 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20  DirectoryToken, 
118a0 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20  directory);..   
118b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
118c0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
118d0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
118e0 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
118f0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
11900 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
11910 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
11920 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
11930 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
11940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11950 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
11960 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
11970 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11990 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
119b0 20 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 54 72 61 63 65 2e            Trace.
119d0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
119e0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
119f0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
11a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a10 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
11a20 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
11a30 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
11a40 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
11a70 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
11a80 65 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a  e assembly " +..
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64                "d
11ab0 69 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20  irectory token: 
11ac0 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
11ad0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b00 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b40 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
11b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b60 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
11b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11b90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11ba0 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
11bb0 20 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c   assembly = null
11bc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11bd0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11be0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11bf0 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d             assem
11c00 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47  bly = Assembly.G
11c10 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d  etExecutingAssem
11c20 62 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  bly();..        
11c30 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
11c40 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
11c50 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
11c60 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
11c70 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
11c80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
11c90 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
11ca0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
11cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11cc0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11cd0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
11ce0 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
11cf0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
11d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11d20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
11d30 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
11d40 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
11d50 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d70 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
11d80 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
11d90 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
11da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11db0 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
11dc0 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
11dd0 20 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e   obtain executin
11de0 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  g " +..         
11df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e00 20 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22   "assembly: {0}"
11e10 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
11e20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
11e30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11e40 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
11e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11e70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
11e80 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
11e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11ea0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
11eb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11ec0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
11ed0 67 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  g targetFramewor
11ee0 6b 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61  k = AbbreviateTa
11ef0 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a  rgetFramework(..
11f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f10 20 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72    GetAssemblyTar
11f20 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73  getFramework(ass
11f30 65 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  embly));....    
11f40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
11f50 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
11f60 70 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77  pty(targetFramew
11f70 6f 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ork))..         
11f80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11f90 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
11fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11fc0 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
11fd0 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
11fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11ff0 20 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67              Targ
12000 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e  etFrameworkToken
12010 2c 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  , targetFramewor
12020 6b 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k);..           
12030 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
12040 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
12050 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12070 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
12080 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
12090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
120a0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
120b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
120c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
120d0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
120e0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
120f0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
12100 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12120 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12140 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12150 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
12160 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
12170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
12190 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
121a0 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
121b0 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
121c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121d0 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
121e0 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
121f0 6f 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74  o replace target
12200 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74      "framework t
12230 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b  oken: {0}", e));
12240 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12260 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
12280 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
12290 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
122a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122b0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
122c0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
122e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
122f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12300 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12310 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12320 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
12330 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lue;..      }..#
12340 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
12350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
123a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
123b0 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
123c0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
123d0 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70   value of the sp
123e0 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c  ecified setting,
123f0 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a   using the XML..
12400 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
12410 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64  uration file and
12420 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  /or the environm
12430 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f  ent variables fo
12440 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  r the current.. 
12450 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
12460 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72   and/or the curr
12470 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e  ent system, when
12480 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
12490 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
124a0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
124b0 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
124c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
124d0 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74  name of the sett
124e0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
124f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
12500 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12510 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20  "default">..    
12520 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
12530 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  to be returned i
12540 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61  f the setting ha
12550 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
12560 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20  xplicitly..     
12570 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62   /// or cannot b
12580 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
12590 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
125a0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
125b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
125c0 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
125d0 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20  he setting -OR- 
125e0 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
125f0 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a  e specified by..
12600 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
12610 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
12620 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20  t" /> if it has 
12630 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
12640 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20  licitly or..    
12650 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
12660 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20  determined.  By 
12670 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66  default, all ref
12680 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74  erences to exist
12690 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
126a0 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
126b0 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70  bles will be exp
126c0 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63  anded to their c
126d0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c  orresponding val
126e0 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ues..      /// w
126f0 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20  ithin the value 
12700 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75  to be returned u
12710 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65  nless either the
12720 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d   "No_Expand" or.
12730 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45  .      /// "No_E
12740 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20  xpand_<paramref 
12750 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20  name="name" />" 
12760 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
12770 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d  able is set [to.
12780 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68  .      /// anyth
12790 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ing]...      ///
127a0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
127b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
127c0 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
127d0 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
127e0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
127f0 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  e,    /* in */..
12800 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12810 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20   @default /* in 
12820 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
12830 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50  .      {..#if !P
12840 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12850 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
12860 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12870 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
12880 65 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51  e special "No_SQ
12890 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61  LiteGetSettingVa
128a0 6c 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  lue" environment
128b0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
128c0 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73       variable is
128d0 20 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e   set [to anythin
128e0 67 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  g], this method 
128f0 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20  will always..   
12900 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12910 72 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75  return the defau
12920 6c 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  lt value...     
12930 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
12940 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
12950 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
12960 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
12970 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f              "No_
12980 53 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67  SQLiteGetSetting
12990 56 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29  Value") != null)
129a0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
129b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
129c0 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
129d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
129e0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
129f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
12a40 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
12a50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12a60 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
12a70 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
12a80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12ad0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
12ae0 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
12af0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
12b00 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12b10 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72    // NOTE: We ar
12b20 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20  e about to read 
12b30 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  a setting value 
12b40 66 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e  from the environ
12b50 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
12b60 2f 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73  //       or poss
12b70 69 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d  ibly from the XM
12b80 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
12b90 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d  file; create or.
12ba0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
12bb0 20 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68      increment th
12bc0 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74  e appropriate st
12bd0 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20  atistic now...  
12be0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12bf0 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
12c00 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
12c10 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20  ReadCount(name, 
12c20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  false);..#endif.
12c30 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
12c40 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
12c50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12ca0 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e        bool expan
12cb0 64 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41  d = true; /* SHA
12cc0 52 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  RED: Environment
12cd0 20 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69   -AND- XML confi
12ce0 67 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20  g file. */....  
12cf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12d40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12d50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12d60 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
12d70 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d  g value = null;.
12d80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
12d90 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
12da0 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
12db0 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29  ble("No_Expand")
12dc0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
12dd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12de0 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
12df0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
12e00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c   }..          el
12e10 73 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65  se if (Environme
12e20 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
12e30 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
12e50 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
12e60 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
12e70 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
12e80 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
12e90 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78            "No_Ex
12ea0 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29  pand_{0}", name)
12eb0 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
12ec0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12ed0 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20         expand = 
12ee0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
12ef0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12f00 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
12f10 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
12f20 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65  entVariable(name
12f30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12f40 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
12f50 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
12f60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12f80 20 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20   (expand)..     
12f90 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
12fa0 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
12fb0 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
12fc0 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
12fd0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
12fe0 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70       value = Rep
12ff0 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  laceEnvironmentV
13000 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61  ariableTokens(va
13010 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
13020 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13030 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
13040 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
13050 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
13060 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
13070 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
13080 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53  TE: If the "No_S
13090 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69  QLiteXmlConfigFi
130a0 6c 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  le" environment 
130b0 76 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20  variable is..   
130c0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
130d0 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
130e0 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
130f0 69 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66  ill NEVER read f
13100 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
13110 20 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20     //       XML 
13120 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
13130 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le...          /
13140 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
13150 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
13160 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
13170 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
13180 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65        "No_SQLite
13190 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20  XmlConfigFile") 
131a0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
131b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
131c0 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
131d0 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ault;..         
131e0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
131f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13240 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
13250 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
13260 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
13270 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13280 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13290 20 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f   We are about to
132a0 20 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20   read a setting 
132b0 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58  value from the X
132c0 4d 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ML..          //
132d0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
132e0 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74  tion file; creat
132f0 65 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74  e or increment t
13300 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
13310 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13320 20 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77     statistic now
13330 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
13340 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
13350 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65  Data.IncrementSe
13360 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e  ttingReadCount(n
13370 61 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e  ame, true);..#en
13380 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
13390 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
133a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
133f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13400 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
13410 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ViaXmlConfigFile
13420 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
13430 20 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e   GetCachedXmlCon
13440 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e  figFileName(), n
13450 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65  ame, @default, e
13460 78 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  xpand);..      }
13470 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
13480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
134d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
134e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69  EWORK..      pri
134f0 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
13500 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28  ng ListToString(
13510 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69  IList<string> li
13520 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  st)..      {..  
13530 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74          if (list
13540 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
13550 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13560 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
13570 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72     StringBuilder
13580 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74   result = new St
13590 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a  ringBuilder();..
135a0 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
135b0 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d  ach (string elem
135c0 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20  ent in list)..  
135d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
135e0 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
135f0 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
13600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13610 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20   continue;....  
13620 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13630 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20  result.Length > 
13640 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
13650 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70        result.App
13660 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20  end(' ');....   
13670 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
13680 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74  t.Append(element
13690 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
136a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
136b0 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72  urn result.ToStr
136c0 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ing();..      }.
136d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13720 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
13730 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43  ate static int C
13740 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74  heckForArchitect
13750 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73  uresAndPlatforms
13760 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
13770 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ing directory,..
13780 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69            ref Li
13790 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68  st<string> match
137a0 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  es..          ).
137b0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
137c0 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d      int result =
137d0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
137e0 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20   if (matches == 
137f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13800 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e       matches = n
13810 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
13820 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13830 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
13840 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
13850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13860 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
13870 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
13880 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20  ctory) &&..     
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72               (pr
138a0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
138b0 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20  urePlatforms != 
138c0 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
138d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
138e0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
138f0 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72  ch (KeyValuePair
13900 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
13910 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20   pair..         
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13930 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41     in processorA
13940 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
13950 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20  orms)..         
13960 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13980 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e    if (Directory.
13990 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62  Exists(MaybeComb
139a0 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
139b0 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a  y, pair.Key)))..
139c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
139e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139f0 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70     matches.Add(p
13a00 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20  air.Key);..     
13a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
13a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a60 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
13a70 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  pair.Value;.... 
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a90 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
13aa0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
13ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ae0 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
13af0 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65  ory.Exists(Maybe
13b00 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
13b10 63 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d  ctory, value))).
13b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b50 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28      matches.Add(
13b60 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
13b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b80 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20     result++;..  
13b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ba0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13bb0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13bc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13bd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13be0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
13bf0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ult;..      }...
13c00 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c50 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ....      privat
13c60 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68  e static bool Ch
13c70 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42  eckAssemblyCodeB
13c80 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
13c90 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
13ca0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
13cb0 66 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  f string fileNam
13cc0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
13cd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13ce0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
13cf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13d00 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20     if (assembly 
13d10 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
13d20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13d30 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
13d40 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
13d50 67 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73  g codeBase = ass
13d60 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d  embly.CodeBase;.
13d70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13d80 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
13d90 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61  llOrEmpty(codeBa
13da0 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
13db0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
13dc0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
13dd0 20 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d         Uri uri =
13de0 20 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73   new Uri(codeBas
13df0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13e00 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46     string localF
13e10 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f  ileName = uri.Lo
13e20 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20  calPath;....    
13e30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
13e40 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c  ile.Exists(local
13e50 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13e70 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13e80 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
13e90 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
13ea0 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
13eb0 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
13ec0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46            localF
13ed0 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72  ileName); /* thr
13ee0 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
13ef0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d         string xm
13f00 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
13f10 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
13f20 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
13f30 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
13f40 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  , XmlConfigFileN
13f50 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
13f60 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
13f70 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67  Exists(xmlConfig
13f80 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
13f90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
13fa0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
13fb0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
13fc0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
13fd0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
13fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14000 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
14010 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
14020 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
14030 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
14040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
14050 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
14060 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
14070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14080 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
14090 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
140a0 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67  found XML config
140b0 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b  uration file " +
140c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140d0 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61              "via
140e0 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63   code base for c
140f0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
14100 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b  ng assembly: \"{
14110 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20  0}\"",..        
14120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14130 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e    xmlConfigFileN
14140 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ame)); /* throw 
14150 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
14160 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14170 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
14180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14190 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
141a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
141b0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
141d0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
141e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
141f0 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69  leName = localFi
14200 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
14210 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14220 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
14230 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14240 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73            List<s
14250 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d  tring> matches =
14260 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
14270 20 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63          if (Chec
14280 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
14290 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69  sAndPlatforms(di
142a0 72 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74  rectory, ref mat
142b0 63 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20  ches) > 0)..    
142c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
142d0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
142e0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
142f0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
14300 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
14310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14330 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
14340 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
14350 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
14360 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
14380 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
14390 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
143a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143b0 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
143c0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
143d0 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62  found native sub
143e0 2d 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b  -directories " +
143f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14400 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61              "via
14410 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63   code base for c
14420 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
14430 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b  ng assembly: \"{
14440 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20  0}\"",..        
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14460 20 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d    ListToString(m
14470 61 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68  atches))); /* th
14480 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
14490 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
144a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
144b0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
144c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
144d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144e0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
144f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14500 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
14510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14520 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63    fileName = loc
14530 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  alFileName;..   
14540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
14550 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
14560 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
14570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14580 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
14590 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
145a0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
145b0 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
145c0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
145d0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
145e0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
145f0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
14600 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
14610 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
14620 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
14630 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
14640 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14670 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
14680 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
14690 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146b0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
146c0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
146d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
146e0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
146f0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
14700 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65  er failed to che
14710 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b  ck code base " +
14720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14730 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72          "for cur
14740 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
14750 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c   assembly: {0}",
14760 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
14770 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14780 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14790 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
147a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
147b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
147c0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
147d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
147e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
147f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
14800 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
14810 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
14820 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14870 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14880 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14890 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65  Resets the cache
148a0 64 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63  d assembly direc
148b0 74 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73  tory value, thus
148c0 20 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78   forcing the nex
148d0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c  t..      /// cal
148e0 6c 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22  l to <see cref="
148f0 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
14900 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
14910 65 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20  ethod to rely.. 
14920 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68       /// upon th
14930 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
14940 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14950 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20  y" /> method to 
14960 66 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20  fetch the..     
14970 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69   /// assembly di
14980 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
14990 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
149a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
149b0 61 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43  atic void ResetC
149c0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
149d0 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
149e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
149f0 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
14a00 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
14a10 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
14a20 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
14a30 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
14a40 64 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73  d_ResetCachedAss
14a50 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29  emblyDirectory")
14a60 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
14a70 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14a80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
14a90 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
14aa0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
14ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
14ac0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
14ad0 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  ectory = null;..
14ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
14af0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14b00 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  y = false;..    
14b10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
14b20 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
14b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b70 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
14b80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14b90 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
14ba0 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68  returns the cach
14bb0 65 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  ed directory for
14bc0 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
14bd0 72 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f  rrently..      /
14be0 2f 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  // being execute
14bf0 64 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e  d, if available.
14c00 20 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20    If the cached 
14c10 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
14c20 72 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ry value..      
14c30 2f 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  /// is not avail
14c40 61 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63  able, the <see c
14c50 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79  ref="GetAssembly
14c60 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
14c70 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
14c80 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20   /// be used to 
14c90 6f 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d  obtain the assem
14ca0 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  bly directory...
14cb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14cc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14cd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
14ce0 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f   /// The directo
14cf0 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
14d00 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
14d10 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52  ing executed -OR
14d20 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20  - null if..     
14d30 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62   /// it cannot b
14d40 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
14d50 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
14d60 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
14d70 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
14d80 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62   GetCachedAssemb
14d90 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
14da0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14db0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
14dc0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
14dd0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
14de0 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
14df0 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
14e00 4d 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64  Method_GetCached
14e10 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14e20 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y");..#endif..  
14e30 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
14e40 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
14e50 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
14e60 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
14e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14e80 20 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65    if (cachedAsse
14e90 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d  mblyDirectory !=
14ea0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14eb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14ec0 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44   cachedAssemblyD
14ed0 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20  irectory;....   
14ee0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
14ef0 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
14f00 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry)..           
14f10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
14f20 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
14f30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
14f40 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79  turn GetAssembly
14f50 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20  Directory();..  
14f60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
14f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
14fc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14fd0 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
14fe0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
14ff0 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
15000 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
15010 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20  ently being..   
15020 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e     /// executed.
15030 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15040 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15050 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
15060 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63     /// The direc
15070 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73  tory for the ass
15080 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
15090 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d  being executed -
150a0 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20  OR- null if..   
150b0 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74     /// it cannot
150c0 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
150d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
150e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
150f0 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
15100 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69  ng GetAssemblyDi
15110 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
15120 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
15130 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
15140 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
15150 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
15160 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
15170 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
15180 6f 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69  od_GetAssemblyDi
15190 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64  rectory");..#end
151a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
151b0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
151c0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
151d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
151e0 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
151f0 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
15200 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
15210 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
15220 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15230 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
15240 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15250 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15260 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
15270 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
15280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
152a0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
152b0 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
152c0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
152d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
152e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
152f0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
15300 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
15310 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
15320 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e  ing fileName = n
15330 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ull;....#if PLAT
15340 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15350 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
15360 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
15370 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
15380 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
15390 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
153a0 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
153b0 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  lyName == null).
153c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
153d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
153e0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
153f0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
15400 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15420 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
15430 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65  Directory = true
15440 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15450 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15460 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15470 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
15480 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15490 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
154a0 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61  ame = assemblyNa
154b0 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65  me.CodeBase;..#e
154c0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
154d0 20 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73     if (!CheckAss
154e0 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73  emblyCodeBase(as
154f0 73 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65  sembly, ref file
15500 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
15510 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
15520 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f  me = assembly.Lo
15530 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  cation;..#endif.
15540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15550 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
15560 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
15570 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
15580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15590 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
155a0 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
155b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
155d0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
155e0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
155f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
15600 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
15610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15620 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
15630 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
15640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15650 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
15660 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
15670 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
15680 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
15690 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
156a0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
156b0 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
156c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
156d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
156e0 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
156f0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
15700 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15720 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
15730 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
15750 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15760 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
15770 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
15780 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15790 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
157a0 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
157b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
157c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
157d0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
157e0 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f  ectory = directo
157f0 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
15800 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15810 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
15820 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
15830 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
15840 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
15850 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
15860 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
15870 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
15880 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
15890 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
158a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
158b0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
158c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
158d0 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
158e0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
158f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
15910 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
15920 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
15930 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
15940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15950 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
15960 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
15970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15980 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
15990 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
159a0 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72  ailed to get dir
159b0 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20  ectory " +..    
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
159e0 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
159f0 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
15a00 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
15a10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
15a20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
15a30 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
15a40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15a50 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
15a60 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
15a70 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
15a80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
15a90 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
15aa0 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
15ab0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15ac0 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
15ad0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
15ae0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
15af0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15b00 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
15b10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
15b20 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
15b30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15b80 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69      #region Opti
15b90 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69  onal Native SQLi
15ba0 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
15bb0 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
15bc0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20     //..      // 
15bd0 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20  NOTE: If we are 
15be0 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20  looking for the 
15bf0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
15c00 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c  DLL ("sqlite3.dl
15c10 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20  l"),..      //  
15c20 20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70       the interop
15c30 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e   DLL ("SQLite.In
15c40 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20  terop.dll"), or 
15c50 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
15c60 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
15c70 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61        .NET Compa
15c80 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65  ct Framework, we
15c90 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20   should include 
15ca0 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20  this code (only 
15cb0 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  if the..      //
15cc0 20 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68         feature h
15cd0 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e  as actually been
15ce0 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73   enabled).  This
15cf0 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74   code would be t
15d00 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  otally..      //
15d10 20 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74         redundant
15d20 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20   if this module 
15d30 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64  has been bundled
15d40 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d   into the mixed-
15d50 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  mode..      //  
15d60 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a       assembly...
15d70 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51        //..#if SQ
15d80 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
15d90 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
15da0 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
15db0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d  PACTFRAMEWORK...
15dc0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
15dd0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63   // NOTE: Only c
15de0 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61  ompile in the na
15df0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
15e00 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68  -load code if th
15e10 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20  e feature..     
15e20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65   //       has be
15e30 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74  en enabled for t
15e40 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20  his build...    
15e50 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41    //..#if PRELOA
15e60 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
15e70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15e80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15e90 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
15ea0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
15eb0 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67  iable containing
15ec0 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
15ed0 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
15ee0 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
15ef0 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
15f00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15f10 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
15f20 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
15f30 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45  nly string PROCE
15f40 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
15f50 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  E =..          "
15f60 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
15f70 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20  ECTURE";....    
15f80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15fd0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
15fe0 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
15ff0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16000 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
16010 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
16020 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
16030 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
16040 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20  ary or null...  
16050 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16060 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
16070 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
16080 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
16090 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  duleFileName = n
160a0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ull;....      //
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
16100 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16110 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
16120 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
16130 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
16140 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
16150 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20  r the value..   
16160 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65     /// IntPtr.Ze
16170 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
16180 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16190 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
161a0 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61  IntPtr _SQLiteNa
161b0 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
161c0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
161d0 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
161e0 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
161f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16230 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
16240 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16250 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
16260 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
16270 6d 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20  me (without any 
16280 64 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d  directory inform
16290 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f  ation)..      //
162a0 2f 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  / for the native
162b0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
162c0 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64  to be pre-loaded
162d0 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   by this class..
162e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
162f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16300 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
16310 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66    /// The base f
16320 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
16330 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
16340 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65  ibrary to be pre
16350 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20  -loaded by..    
16360 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73    /// this class
16370 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
16380 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62  s value cannot b
16390 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
163a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
163b0 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
163c0 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
163d0 67 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  g GetNativeLibra
163e0 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
163f0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
16400 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
16410 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65  NameOnly = GetSe
16420 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
16430 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
16440 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72  oadSQLite_Librar
16450 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20  yFileNameOnly", 
16460 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
16470 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
16480 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Only != null).. 
16490 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
164a0 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  urn fileNameOnly
164b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
164c0 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c  eturn SQLITE_DLL
164d0 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a  ; /* COMPAT */..
164e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
164f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
16540 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16550 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63  .      /// Searc
16560 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69  hes for the nati
16570 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
16580 79 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f  y in the directo
16590 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ry containing.. 
165a0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73       /// the ass
165b0 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
165c0 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61  being executed a
165d0 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61  s well as the ba
165e0 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
165f0 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20      /// for the 
16600 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
16610 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  ion domain...   
16620 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16630 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
16640 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69  ram name="baseDi
16650 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20  rectory">..     
16660 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
16670 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
16680 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69  r will be modifi
16690 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74  ed to refer to t
166a0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f  he base..      /
166b0 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  // directory con
166c0 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69  taining the nati
166d0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
166e0 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
166f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
16700 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
16710 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
16720 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
16730 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
16740 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77  this parameter w
16750 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ill be modified 
16760 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  to refer to the 
16770 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  name..      /// 
16780 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65  of the immediate
16790 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e   directory (i.e.
167a0 20 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d   the offset from
167b0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
167c0 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ory)..      /// 
167d0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
167e0 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
167f0 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
16800 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16810 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
16820 3d 22 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63  ="allowBaseDirec
16830 74 6f 72 79 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20  toryOnly">..    
16840 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
16850 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
16860 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
16870 69 65 64 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 20  ied to non-zero 
16880 6f 6e 6c 79 20 69 66 0d 0a 20 20 20 20 20 20 2f  only if..      /
16890 2f 2f 20 74 68 65 20 62 61 73 65 20 64 69 72 65  // the base dire
168a0 63 74 6f 72 79 20 69 74 73 65 6c 66 20 73 68 6f  ctory itself sho
168b0 75 6c 64 20 62 65 20 61 6c 6c 6f 77 65 64 20 66  uld be allowed f
168c0 6f 72 20 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e  or loading the n
168d0 61 74 69 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  ative..      ///
168e0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
168f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
16900 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
16910 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
16920 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29  n-zero (success)
16930 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
16940 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 61  QLite library wa
16950 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69  s found; otherwi
16960 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a  se,..      /// z
16970 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a  ero (failure)...
16980 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
16990 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
169a0 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
169b0 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f  SearchForDirecto
169c0 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry(..          r
169d0 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44 69  ef string baseDi
169e0 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20  rectory,        
169f0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
16a00 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
16a10 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
16a20 65 63 74 75 72 65 2c 20 2f 2a 20 6f 75 74 20 2a  ecture, /* out *
16a30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  /..          ref
16a40 20 62 6f 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44   bool allowBaseD
16a50 69 72 65 63 74 6f 72 79 4f 6e 6c 79 20 20 20 2f  irectoryOnly   /
16a60 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
16a70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
16a80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65            if (Ge
16a90 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
16aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16ab0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e  "PreLoadSQLite_N
16ac0 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74  oSearchForDirect
16ad0 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
16ae0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
16af0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16b00 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f   return false; /
16b10 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20  * DISABLED */.. 
16b20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
16b30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16b40 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44        // NOTE: D
16b50 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73  etermine the bas
16b60 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  e file name for 
16b70 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
16b80 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
16b90 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49        //       I
16ba0 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e  f this is not kn
16bb0 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73  own by this clas
16bc0 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e  s, we cannot con
16bd0 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  tinue...        
16be0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16bf0 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f  string fileNameO
16c00 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c  nly = GetNativeL
16c10 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
16c20 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
16c30 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
16c40 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly == null)..  
16c50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
16c60 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
16c70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16c80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
16c90 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f 66 20  ild the list of 
16ca0 62 61 73 65 20 64 69 72 65 63 74 6f 72 69 65 73  base directories
16cb0 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 2f 70   and processor/p
16cc0 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20  latform..       
16cd0 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65     //       name
16ce0 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74 73 20  s.  These lists 
16cf0 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20  will be used to 
16d00 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68 65 20  help locate the 
16d10 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
16d20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74    //       SQLit
16d30 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28  e core library (
16d40 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  or interop assem
16d50 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64  bly) to pre-load
16d60 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20 20   into..         
16d70 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73 20 70   //       this p
16d80 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  rocess...       
16d90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16da0 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65 63 74   string[] direct
16db0 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20  ories = {..     
16dc0 20 20 20 20 20 20 20 20 20 47 65 74 41 73 73 65           GetAsse
16dd0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 2c  mblyDirectory(),
16de0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16df0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e10 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
16e20 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
16e30 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a  ctory,..#endif..
16e40 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a            };....
16e50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
16e60 20 65 78 74 72 61 53 75 62 44 69 72 65 63 74 6f   extraSubDirecto
16e70 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ry = null;....  
16e80 20 20 20 20 20 20 20 20 69 66 20 28 28 47 65 74          if ((Get
16e90 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
16ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16eb0 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
16ec0 41 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f  AllowBaseDirecto
16ed0 72 79 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 20 21  ryOnly", null) !
16ee0 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20  = null) ||..    
16ef0 20 20 20 20 20 20 20 20 20 20 28 48 65 6c 70 65            (Helpe
16f00 72 4d 65 74 68 6f 64 73 2e 49 73 44 6f 74 4e 65  rMethods.IsDotNe
16f10 74 43 6f 72 65 28 29 20 26 26 20 21 48 65 6c 70  tCore() && !Help
16f20 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
16f30 6f 77 73 28 29 29 29 0d 0a 20 20 20 20 20 20 20  ows()))..       
16f40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16f50 20 20 20 20 65 78 74 72 61 53 75 62 44 69 72 65      extraSubDire
16f60 63 74 6f 72 79 20 3d 20 53 74 72 69 6e 67 2e 45  ctory = String.E
16f70 6d 70 74 79 3b 20 2f 2a 20 2e 4e 45 54 20 43 6f  mpty; /* .NET Co
16f80 72 65 20 6f 6e 20 50 4f 53 49 58 20 2a 2f 0d 0a  re on POSIX */..
16f90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16fa0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
16fb0 5d 20 73 75 62 44 69 72 65 63 74 6f 72 69 65 73  ] subDirectories
16fc0 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
16fd0 20 20 20 20 47 65 74 50 72 6f 63 65 73 73 6f 72      GetProcessor
16fe0 41 72 63 68 69 74 65 63 74 75 72 65 28 29 2c 20  Architecture(), 
16ff0 2f 2a 20 65 2e 67 2e 20 22 78 38 36 22 20 2a 2f  /* e.g. "x86" */
17000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17010 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
17020 6e 75 6c 6c 29 2c 20 20 20 20 20 20 2f 2a 20 65  null),      /* e
17030 2e 67 2e 20 22 57 69 6e 33 32 22 20 2a 2f 0d 0a  .g. "Win32" */..
17040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
17050 74 72 61 53 75 62 44 69 72 65 63 74 6f 72 79 20  traSubDirectory 
17060 20 20 20 20 20 20 20 20 20 20 2f 2a 20 62 61 73            /* bas
17070 65 20 64 69 72 65 63 74 6f 72 79 20 6f 6e 6c 79  e directory only
17080 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ? */..          
17090 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  };....          
170a0 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
170b0 64 69 72 65 63 74 6f 72 79 20 69 6e 20 64 69 72  directory in dir
170c0 65 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20  ectories)..     
170d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
170e0 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
170f0 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
17100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17110 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
17120 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
17130 63 68 20 28 73 74 72 69 6e 67 20 73 75 62 44 69  ch (string subDi
17140 72 65 63 74 6f 72 79 20 69 6e 20 73 75 62 44 69  rectory in subDi
17150 72 65 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20  rectories)..    
17160 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17180 66 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 20  f (subDirectory 
17190 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
171a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
171b0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
171c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
171d0 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
171e0 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
171f0 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
17200 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
17210 20 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65             Maybe
17220 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
17230 63 74 6f 72 79 2c 20 73 75 62 44 69 72 65 63 74  ctory, subDirect
17240 6f 72 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ory),..         
17250 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
17260 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a  eNameOnly));....
17270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17280 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17290 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
172a0 20 49 66 20 74 68 65 20 53 51 4c 69 74 65 20 44   If the SQLite D
172b0 4c 4c 20 66 69 6c 65 20 65 78 69 73 74 73 2c 20  LL file exists, 
172c0 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 2e 0d  return success..
172d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
172e0 20 20 20 2f 2f 20 20 20 20 20 20 20 50 72 69 6f     //       Prio
172f0 72 20 74 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20  r to returning, 
17300 73 65 74 20 74 68 65 20 62 61 73 65 20 64 69 72  set the base dir
17310 65 63 74 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20  ectory and..    
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17330 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
17340 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
17350 20 72 65 66 6c 65 63 74 20 74 68 65 20 6c 6f 63   reflect the loc
17360 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ation..         
17370 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17380 20 20 77 68 65 72 65 20 69 74 20 77 61 73 20 66    where it was f
17390 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  ound...         
173a0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
173b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
173c0 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
173d0 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
173e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
173f0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
17400 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
17410 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
17420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
17430 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
17440 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17460 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
17470 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
17480 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
17490 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
174a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174b0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
174c0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
174d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174e0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
174f0 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
17500 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74  loader found nat
17510 69 76 65 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20  ive file " +..  
17520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17530 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 61 6d              "nam
17540 65 20 5c 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72  e \"{0}\", retur
17550 6e 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 5c  ning directory \
17560 22 7b 31 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a  "{1}\" and " +..
17570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73                "s
17590 75 62 2d 64 69 72 65 63 74 6f 72 79 20 5c 22 7b  ub-directory \"{
175a0 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61  2}\"...", fileNa
175b0 6d 65 2c 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  me, directory,..
175c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
175e0 62 44 69 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a  bDirectory)); /*
175f0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
17600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17610 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17620 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
17630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17640 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17660 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
17670 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
17680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
17690 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
176a0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
176b0 65 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72  eDirectory = dir
176c0 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
176d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
176e0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
176f0 74 75 72 65 20 3d 20 73 75 62 44 69 72 65 63 74  ture = subDirect
17700 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
17710 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 6f              allo
17720 77 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e  wBaseDirectoryOn
17730 6c 79 20 3d 20 28 73 75 62 44 69 72 65 63 74 6f  ly = (subDirecto
17740 72 79 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 3b  ry.Length == 0);
17750 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17760 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17770 20 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20   true; /* FOUND 
17780 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
17790 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
177a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
177b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
177c0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
177d0 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f   /* NOT FOUND */
177e0 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
177f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
17840 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17850 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
17860 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
17870 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
17880 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  ory of the curre
17890 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  nt application..
178a0 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e        /// domain
178b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
178c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
178d0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
178e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
178f0 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
17900 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
17910 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f  cation domain -O
17920 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20  R- null if it.. 
17930 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
17940 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
17950 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
17960 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
17970 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
17980 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f  g GetBaseDirecto
17990 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ry()..      {.. 
179a0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
179b0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
179c0 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
179d0 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
179e0 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ory" environment
179f0 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20   variable..     
17a00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
17a10 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72   set, use it ver
17a20 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61  batim for the ba
17a30 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
17a40 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17a50 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
17a60 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74  rectory = GetSet
17a70 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f  tingValue("PreLo
17a80 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72  adSQLite_BaseDir
17a90 65 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20  ectory",..      
17aa0 20 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a          null);..
17ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
17ac0 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  directory != nul
17ad0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
17ae0 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
17af0 72 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ry;....#if !PLAT
17b00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17b10 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
17b20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
17b30 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
17b40 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73  PreLoadSQLite_Us
17b50 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  eAssemblyDirecto
17b60 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ry" environment.
17b70 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
17b80 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
17b90 73 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67  set (to anything
17ba0 29 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20  ), then attempt 
17bb0 74 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20  to use the..    
17bc0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
17bd0 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
17be0 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c  ing the currentl
17bf0 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
17c00 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  mbly..          
17c10 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53  //       (i.e. S
17c20 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
17c30 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68  e) intsead of th
17c40 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  e application.. 
17c50 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17c60 20 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69    domain base di
17c70 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
17c80 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17c90 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
17ca0 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
17cb0 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
17cc0 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65  adSQLite_UseAsse
17cd0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20  mblyDirectory", 
17ce0 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  null) != null)..
17cf0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17d00 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
17d10 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62  tory = GetAssemb
17d20 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
17d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17d40 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d  if (directory !=
17d50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
17d60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17d70 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
17d80 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17d90 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17da0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
17db0 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b  erwise, fallback
17dc0 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61   on using the ba
17dd0 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
17de0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
17df0 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20  /       current 
17e00 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
17e10 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  in...          /
17e20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
17e30 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  urn AppDomain.Cu
17e40 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
17e50 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73  Directory;..#els
17e60 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  e..          //.
17e70 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
17e80 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
17e90 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
17ea0 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
17eb0 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
17ec0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
17ed0 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  e currently exec
17ee0 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d  uting assembly..
17ef0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
17f00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17f10 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
17f20 74 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory();..#endif.
17f30 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
17f40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
17f90 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17fa0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
17fb0 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79  rmines if the dy
17fc0 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
17fd0 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71  ry file name req
17fe0 75 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a  uires a suffix..
17ff0 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64        /// and ad
18000 64 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61  ds it if necessa
18010 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
18020 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
18030 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18040 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
18050 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
18060 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e  inal dynamic lin
18070 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
18080 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  ame to inspect..
18090 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
180a0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
180b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
180c0 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20  /// The dynamic 
180d0 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
180e0 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79  e name, possibly
180f0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63   modified to inc
18100 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f  lude an..      /
18110 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20  // extension... 
18120 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
18130 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
18140 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
18150 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
18160 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
18170 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a  ring fileName /*
18180 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18190 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
181a0 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
181b0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
181c0 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  y(fileName))..  
181d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
181e0 20 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c           if (Hel
181f0 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e  perMethods.IsWin
18200 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20  dows())..       
18210 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18220 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18230 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69  !fileName.EndsWi
18240 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73  th(DllFileExtens
18250 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ion,..          
18260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18270 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
18280 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
18290 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
182a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
182b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182c0 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
182d0 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73   + DllFileExtens
182e0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ion;..          
182f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18300 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18310 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
18320 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
18330 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  Name;..      }..
18340 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
183a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
183b0 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
183c0 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73  turns the proces
183d0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
183e0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d   of the current.
183f0 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
18400 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
18410 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
18420 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
18430 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72        /// The pr
18440 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
18450 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
18460 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
18470 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20   null if it..   
18480 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
18490 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
184a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
184b0 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
184c0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
184d0 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
184e0 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20  itecture()..    
184f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
18500 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
18510 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
18520 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63  eLoadSQLite_Proc
18530 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
18540 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  e" environment..
18550 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18560 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
18570 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61  et, use it verba
18580 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72  tim for the curr
18590 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  ent processor.. 
185a0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
185b0 20 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d    architecture..
185c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
185d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
185e0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
185f0 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69  cture = GetSetti
18600 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
18610 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
18620 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72  SQLite_Processor
18630 41 72 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e  Architecture", n
18640 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
18650 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
18660 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20  Architecture != 
18670 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18680 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
18690 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
186a0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
186b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
186c0 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68   BUGBUG: Will th
186d0 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c  is always be rel
186e0 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20  iable?..        
186f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
18700 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
18710 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69  cture = GetSetti
18720 6e 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f  ngValue(PROCESSO
18730 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c 20  R_ARCHITECTURE, 
18740 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
18750 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
187a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
187b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
187c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
187d0 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68       // HACK: Ch
187e0 65 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f  eck for an "impo
187f0 73 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f  ssible" situatio
18800 6e 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74  n.  If the point
18810 65 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20  er size..       
18820 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33     //       is 3
18830 32 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63  2-bits, the proc
18840 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
18850 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d  re cannot be "AM
18860 44 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  D64"...         
18870 20 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61   //       In tha
18880 74 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61  t case, we are a
18890 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20  lmost certainly 
188a0 68 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e  hitting a bug in
188b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
188c0 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69  //       operati
188d0 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72  ng system and/or
188e0 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74   Visual Studio t
188f0 68 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a  hat causes the..
18900 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18910 20 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43     PROCESSOR_ARC
18920 48 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f  HITECTURE enviro
18930 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74  nment variable t
18940 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
18950 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
18960 20 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e    wrong value in
18970 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e   some circumstan
18980 63 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66  ces.  Please ref
18990 65 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20  er to ticket..  
189a0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
189b0 20 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f   [9ac9862611] fo
189c0 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d  r further inform
189d0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
189e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
189f0 69 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65  if ((IntPtr.Size
18a00 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29   == sizeof(int))
18a10 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
18a20 20 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73     String.Equals
18a30 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
18a40 65 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c  ecture, "AMD64",
18a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a60 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
18a70 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
18a80 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
18a90 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
18aa0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
18ab0 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
18ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
18ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
18ae0 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61  / NOTE: When tra
18af0 63 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c  cing is enabled,
18b00 20 73 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e   save the origin
18b10 61 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20  ally detected.. 
18b20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
18b30 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20        processor 
18b40 61 72 63 68 69 74 65 63 74 75 72 65 20 62 65 66  architecture bef
18b50 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e  ore changing it.
18b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18b70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
18b80 20 20 73 74 72 69 6e 67 20 73 61 76 65 64 50 72    string savedPr
18b90 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18ba0 75 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41  ure = processorA
18bb0 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65  rchitecture;..#e
18bc0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
18bd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18be0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
18bf0 20 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70   We know that op
18c00 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20  erating systems 
18c10 74 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44  that return "AMD
18c20 36 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20  64" as..        
18c30 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
18c40 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
18c50 68 69 74 65 63 74 75 72 65 20 61 72 65 20 61 63  hitecture are ac
18c60 74 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65  tually a superse
18c70 74 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20  t of..          
18c80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
18c90 20 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72   "x86" processor
18ca0 20 61 72 63 68 69 74 65 63 74 75 72 65 3b 20 74   architecture; t
18cb0 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e  herefore, return
18cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18cd0 2f 2f 20 20 20 20 20 20 20 22 78 38 36 22 20 77  //       "x86" w
18ce0 68 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20  hen the pointer 
18cf0 73 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e  size is 32-bits.
18d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18d10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
18d20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
18d30 74 65 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b  tecture = "x86";
18d40 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
18d50 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
18d60 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
18d70 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
18d80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
18d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18da0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
18db0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
18dc0 20 53 68 6f 77 20 74 68 61 74 20 77 65 20 68 69   Show that we hi
18dd0 74 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75  t a fairly unusu
18de0 61 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e  al situation (i.
18df0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
18e00 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
18e10 68 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65  he "wrong" proce
18e20 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
18e30 65 20 77 61 73 20 64 65 74 65 63 74 65 64 29 2e  e was detected).
18e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18e50 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18e60 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
18e70 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
18e80 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
18e90 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
18ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
18eb0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
18ec0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
18ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ee0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
18ef0 70 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65 63  pre-loader detec
18f00 74 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e  ted {0}-bit poin
18f10 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ter " +..       
18f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
18f30 73 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65 73  size with proces
18f40 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
18f50 20 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20   \"{1}\", using 
18f60 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
18f70 20 20 20 20 20 20 20 20 20 20 20 22 70 72 6f 63             "proc
18f80 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
18f90 72 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65  re \"{2}\" inste
18fa0 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20  ad...",..       
18fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
18fc0 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f  ntPtr.Size * 8 /
18fd0 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64  * bits */, saved
18fe0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
18ff0 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  cture,..        
19000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
19010 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19020 75 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ure)); /* throw 
19030 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19040 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
19050 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
19060 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19070 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19080 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
19090 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
190a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
190b0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
190c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
190d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19110 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
19120 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19130 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
19140 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19150 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19160 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
19170 54 45 3a 20 44 65 66 61 75 6c 74 20 74 6f 20 74  TE: Default to t
19180 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
19190 68 69 74 65 63 74 75 72 65 20 72 65 70 6f 72 74  hitecture report
191a0 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
191b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
191c0 20 20 61 70 70 72 6f 70 72 69 61 74 65 20 6e 61    appropriate na
191d0 74 69 76 65 20 6f 70 65 72 61 74 69 6e 67 20 73  tive operating s
191e0 79 73 74 65 6d 20 41 50 49 2c 20 69 66 20 61 6e  ystem API, if an
191f0 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y...            
19200 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19210 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
19220 68 69 74 65 63 74 75 72 65 20 3d 20 4e 61 74 69  hitecture = Nati
19230 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65 72 2e  veLibraryHelper.
19240 47 65 74 4d 61 63 68 69 6e 65 28 29 3b 0d 0a 0d  GetMachine();...
19250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
19260 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19270 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66   // NOTE: Upon f
19280 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 65  ailure, return e
19290 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54 68  mpty string.  Th
192a0 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d  is will prevent.
192b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
192c0 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c 6c  /       the call
192d0 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20  ing method from 
192e0 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69 73  considering this
192f0 20 6d 65 74 68 6f 64 20 63 61 6c 6c 0d 0a 20 20   method call..  
19300 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
19310 20 20 20 20 20 61 20 22 66 61 69 6c 75 72 65 22       a "failure"
19320 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19330 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19340 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
19350 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
19360 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
19370 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
19380 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
19390 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
193a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
193b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19400 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
19410 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  rn processorArch
19420 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20  itecture;..     
19430 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
19440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
19490 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
194a0 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20    /// Given the 
194b0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
194c0 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20  ecture, returns 
194d0 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
194e0 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20  platform...     
194f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
19500 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
19510 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
19520 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
19530 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
19540 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
19550 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e  cture to be tran
19560 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74  slated to a plat
19570 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
19580 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19590 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
195a0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
195b0 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
195c0 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
195d0 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  ed processor arc
195e0 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e  hitecture -OR- n
195f0 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  ull..      /// i
19600 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
19610 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
19620 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19630 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
19640 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
19650 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a  tPlatformName(..
19660 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
19670 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
19680 65 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d  ecture /* in */.
19690 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
196a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
196b0 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
196c0 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
196d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
196e0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
196f0 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72  itecture = GetPr
19700 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19710 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ure();....      
19720 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
19730 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f  sNullOrEmpty(pro
19740 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19750 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  re))..          
19760 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
19770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
19780 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
19790 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
197a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
197b0 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
197c0 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
197d0 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
197e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
197f0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
19800 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
19810 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
19820 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
19830 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
19840 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
19850 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75  forms.TryGetValu
19860 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
19870 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
19880 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
19890 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d   out platformNam
198a0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
198b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
198c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
198d0 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20  latformName;..  
198e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
198f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
19900 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
19910 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
19920 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
19980 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
19990 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
199a0 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  d the native SQL
199b0 69 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65  ite library base
199c0 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
199d0 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69  ed..      /// di
199e0 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63  rectory and proc
199f0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
19a00 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
19a10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
19a20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
19a30 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22  ="baseDirectory"
19a40 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
19a50 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
19a60 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72  to use, null for
19a70 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62 61   default (the ba
19a80 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d  se directory of.
19a90 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63  .      /// the c
19aa0 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
19ab0 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69  on domain).  Thi
19ac0 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75  s directory shou
19ad0 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  ld contain the..
19ae0 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
19af0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
19b00 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64 69   specific sub-di
19b10 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20  rectories...    
19b20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19b30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19b40 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
19b50 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
19b60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65        /// The re
19b70 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f  quested processo
19b80 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
19b90 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74  null for default
19ba0 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   (the..      ///
19bb0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
19bc0 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
19bd0 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e  urrent process).
19be0 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68    This caller sh
19bf0 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ould..      /// 
19c00 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70  almost always sp
19c10 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74  ecify null for t
19c20 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a  his parameter...
19c30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19c40 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
19c50 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77  aram name="allow
19c60 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
19c70 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  y">..      /// N
19c80 6f 6e 2d 7a 65 72 6f 20 69 6e 64 69 63 61 74 65  on-zero indicate
19c90 73 20 74 68 61 74 20 74 68 65 20 6e 61 74 69 76  s that the nativ
19ca0 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
19cb0 20 63 61 6e 20 62 65 20 6c 6f 61 64 65 64 0d 0a   can be loaded..
19cc0 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74        /// from t
19cd0 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
19ce0 79 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20  y itself...     
19cf0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19d00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
19d10 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75  name="nativeModu
19d20 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  leFileName">..  
19d30 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64      /// The cand
19d40 69 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f 64  idate native mod
19d50 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f  ule file name to
19d60 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73 74   load will be st
19d70 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20 20  ored here,..    
19d80 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73 61    /// if necessa
19d90 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
19da0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
19db0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19dc0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
19dd0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  le">..      /// 
19de0 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
19df0 65 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75  e handle as retu
19e00 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72  rned by LoadLibr
19e10 61 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72  ary will be stor
19e20 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65  ed..      /// he
19e30 72 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  re, if necessary
19e40 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  .  This value wi
19e50 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65 72  ll be IntPtr.Zer
19e60 6f 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74 6f  o if the call to
19e70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64  ..      /// Load
19e80 4c 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a  Library fails...
19e90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19ea0 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
19eb0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
19ec0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
19ed0 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
19ee0 20 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63 63   was loaded succ
19ef0 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77  essfully; otherw
19f00 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ise,..      /// 
19f10 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
19f20 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
19f30 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
19f40 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51  c bool PreLoadSQ
19f50 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20  LiteDll(..      
19f60 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44      string baseD
19f70 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20  irectory,       
19f80 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
19f90 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
19fa0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
19fb0 63 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20  cture,    /* in 
19fc0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  */..          bo
19fd0 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65  ol allowBaseDire
19fe0 63 74 6f 72 79 4f 6e 6c 79 2c 20 20 20 20 20 2f  ctoryOnly,     /
19ff0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a000 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61     ref string na
1a010 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
1a020 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  me, /* out */.. 
1a030 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
1a040 50 74 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  Ptr nativeModule
1a050 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74  Handle    /* out
1a060 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
1a070 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1a080 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a090 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
1a0a0 68 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73  he specified bas
1a0b0 65 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e  e directory is n
1a0c0 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66  ull, use the def
1a0d0 61 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ault..          
1a0e0 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61  //       (i.e. a
1a0f0 74 74 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61  ttempt to automa
1a100 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69  tically detect i
1a110 74 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  t)...          /
1a120 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1a130 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d  (baseDirectory =
1a140 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1a150 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
1a160 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44 69  tory = GetBaseDi
1a170 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
1a180 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a190 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
1a1a0 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71  f we failed to q
1a1b0 75 65 72 79 20 74 68 65 20 62 61 73 65 20 64 69  uery the base di
1a1c0 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f  rectory, stop no
1a1d0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
1a1e0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1a1f0 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d  baseDirectory ==
1a200 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1a210 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1a220 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1a230 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1a240 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e  / NOTE: Determin
1a250 65 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20  e the base file 
1a260 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
1a270 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
1a280 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
1a290 2f 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20  /       If this 
1a2a0 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20  is not known by 
1a2b0 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63  this class, we c
1a2c0 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d  annot continue..
1a2d0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1a2e0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1a2f0 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
1a300 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
1a310 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a  ileNameOnly();..
1a320 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1a330 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20  fileNameOnly == 
1a340 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1a350 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1a360 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1a370 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1a380 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61   NOTE: If the na
1a390 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
1a3a0 61 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68  ary exists in th
1a3b0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
1a3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1a3d0 20 20 20 20 20 69 74 73 65 6c 66 2c 20 70 6f 73       itself, pos
1a3e0 73 69 62 6c 79 20 73 74 6f 70 20 6e 6f 77 2e 0d  sibly stop now..
1a3f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1a400 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1a410 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
1a420 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
1a430 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61 73  eCombinePath(bas
1a440 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20  eDirectory,..   
1a450 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
1a460 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
1a470 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
1a480 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
1a490 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
1a4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1a4b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a4c0 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
1a4d0 20 63 61 6c 6c 65 72 20 69 73 20 61 6c 6c 6f 77   caller is allow
1a4e0 69 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72  ing the base dir
1a4f0 65 63 74 6f 72 79 20 69 74 73 65 6c 66 0d 0a 20  ectory itself.. 
1a500 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1a510 20 20 20 20 20 20 74 6f 20 62 65 20 75 73 65 64        to be used
1a520 2c 20 61 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65  , also make sure
1a530 20 61 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63   a processor arc
1a540 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20  hitecture..     
1a550 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1a560 20 20 77 61 73 20 6e 6f 74 20 73 70 65 63 69 66    was not specif
1a570 69 65 64 3b 20 69 66 20 65 69 74 68 65 72 20 63  ied; if either c
1a580 6f 6e 64 69 74 69 6f 6e 20 69 73 20 66 61 6c 73  ondition is fals
1a590 65 20 6a 75 73 74 0d 0a 20 20 20 20 20 20 20 20  e just..        
1a5a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
1a5b0 74 6f 70 20 6e 6f 77 20 61 6e 64 20 72 65 74 75  top now and retu
1a5c0 72 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  rn failure...   
1a5d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a5f0 28 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74  (allowBaseDirect
1a600 6f 72 79 4f 6e 6c 79 20 26 26 0d 0a 20 20 20 20  oryOnly &&..    
1a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
1a620 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1a630 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ty(processorArch
1a640 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20  itecture))..    
1a650 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
1a670 6f 74 6f 20 62 61 73 65 44 69 72 4f 6e 6c 79 3b  oto baseDirOnly;
1a680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a690 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a6a0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1a6b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a6c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a6d0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
1a6e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a6f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1a700 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a710 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
1a720 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
1a730 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
1a740 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  e is null, use t
1a750 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
1a760 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d         default..
1a770 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1a780 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
1a790 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a7a0 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
1a7b0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
1a7c0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a7d0 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
1a7e0 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
1a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1a800 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1a810 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
1a820 74 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f  to query the pro
1a830 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
1a840 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ure, stop now...
1a850 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1a860 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
1a870 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1a880 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
1a890 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a8a0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1a8b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a8c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
1a8d0 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20  d the full path 
1a8e0 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  and file name fo
1a8f0 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
1a900 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ite..          /
1a910 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
1a920 75 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  using the proces
1a930 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1a940 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
1a950 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a960 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
1a970 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
1a980 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79  eCombinePath(May
1a990 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
1a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
1a9b0 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f  seDirectory, pro
1a9c0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a9d0 72 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  re), fileNameOnl
1a9e0 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
1a9f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1aa00 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1aa10 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
1aa20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
1aa30 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1aa40 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
1aa50 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
1aa60 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
1aa70 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
1aa80 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
1aa90 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1aaa0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
1aab0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
1aac0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1aad0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1aae0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1aaf0 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
1ab00 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
1ab10 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1ab20 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
1ab30 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1ab40 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
1ab50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ab60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ab70 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
1ab80 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
1ab90 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
1aba0 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
1abb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1abc0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1abd0 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
1abe0 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
1abf0 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
1ac00 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
1ac10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ac20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1ac30 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
1ac40 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
1ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1ac60 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ac80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ac90 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
1aca0 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
1acb0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
1acc0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1acd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ace0 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79  //       library
1acf0 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66   using the platf
1ad00 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
1ad10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1ad20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
1ad30 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
1ad40 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62  leName(MaybeComb
1ad50 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d  inePath(MaybeCom
1ad60 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
1ad70 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
1ad80 65 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74  eDirectory, plat
1ad90 66 6f 72 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e  formName), fileN
1ada0 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1add0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69   NOTE: If the fi
1ade0 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  le does not exis
1adf0 74 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74  t, skip trying t
1ae00 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20  o load it...    
1ae10 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1ae20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ae30 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  !File.Exists(fil
1ae40 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1ae50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ae60 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
1ae70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 62      }....      b
1ae80 61 73 65 44 69 72 4f 6e 6c 79 3a 0d 0a 0d 0a 20  aseDirOnly:.... 
1ae90 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1aea0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1aeb0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1aec0 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
1aed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
1aee0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1aef0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1af00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1af10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1af20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
1af30 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
1af40 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
1af50 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
1af60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1af70 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
1af80 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
1af90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1afa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1afb0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1afc0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1afd0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1afe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aff0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1b000 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1b010 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1b020 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
1b030 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
1b040 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20 74  ader is trying t
1b050 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
1b060 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
1b070 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
1b080 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
1b090 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29  ...", fileName))
1b0a0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
1b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1b0d0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1b0e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b0f0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
1b100 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
1b110 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b130 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b140 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
1b150 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  mpt to load the 
1b160 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20  native library. 
1b170 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65   This will eithe
1b180 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
1b190 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e   //       return
1b1a0 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20   a valid native 
1b1b0 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72  module handle, r
1b1c0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1b1d0 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
1b1e0 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68    //       or th
1b1f0 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  row an exception
1b200 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73 65  .  This must use
1b210 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
1b220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b230 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b  //       P/Invok
1b240 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65  e method for the
1b250 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
1b260 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20  ng system...    
1b270 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b280 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
1b290 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
1b2a0 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
1b2c0 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
1b2d0 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65   NativeLibraryHe
1b2e0 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79  lper.LoadLibrary
1b2f0 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
1b300 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b310 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c  urn (nativeModul
1b320 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  eHandle != IntPt
1b330 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1b340 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
1b350 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1b360 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
1b370 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
1b380 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
1b390 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
1b3a0 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
1b3b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1b3c0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
1b3d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1b3e0 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
1b3f0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1b400 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b420 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b430 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b440 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20  First, grab the 
1b450 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72  last Win32 error
1b460 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
1b470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20    int lastError 
1b4a0 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73  = Marshal.GetLas
1b4b0 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f  tWin32Error(); /
1b4c0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b4f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
1b500 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61 69  how where we fai
1b510 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  led to load the 
1b520 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
1b530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b540 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
1b550 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74  y from along wit
1b560 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f  h the Win32 erro
1b570 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20  r code and..    
1b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b590 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e         exception
1b5a0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
1b5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b5d0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1b5e0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
1b5f0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
1b600 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1b610 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1b620 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1b630 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1b640 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
1b650 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
1b660 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
1b670 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
1b680 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
1b690 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
1b6a0 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
1b6b0 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d   (getLastError =
1b6c0 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20   {1}): {2}",..  
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6e0 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61      fileName, la
1b6f0 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a  stError, e)); /*
1b700 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1b710 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b720 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
1b730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1b740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b750 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
1b760 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
1b770 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
1b780 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1b790 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1b7a0 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
1b7b0 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
1b7c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1b7d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
1b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b820 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
1b830 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b840 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  RK..    //..    
1b850 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
1b860 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
1b870 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69  mework, the nati
1b880 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  ve interop assem
1b890 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f  bly must..    //
1b8a0 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62         be used b
1b8b0 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69 64  ecause it provid
1b8c0 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61  es several worka
1b8d0 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43  rounds to .NET C
1b8e0 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20  ompact..    //  
1b8f0 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c       Framework l
1b900 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72  imitations impor
1b910 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20  tant for proper 
1b920 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
1b930 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20   core..    //   
1b940 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
1b950 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61  SQLite functiona
1b960 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67  lity (e.g. being
1b970 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20   able to bind.. 
1b980 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61     //       para
1b990 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c  meters and handl
1b9a0 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  e column values 
1b9b0 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20 61  of types Int64 a
1b9c0 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20  nd Double)...   
1b9d0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
1b9e0 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
1b9f0 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
1ba00 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 39 2e  ite.Interop.109.
1ba10 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c  dll";..#elif SQL
1ba20 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
1ba30 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
1ba40 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
1ba50 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
1ba60 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
1ba70 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e  enabled, use it.
1ba80 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
1ba90 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
1baa0 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
1bab0 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
1bac0 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  if USE_INTEROP_D
1bad0 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  LL..    //..    
1bae0 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
1baf0 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
1bb00 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
1bb10 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
1bb20 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
1bb30 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
1bb40 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
1bb50 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
1bb60 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
1bb70 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
1bb80 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
1bb90 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
1bba0 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
1bbb0 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
1bbc0 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
1bbd0 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
1bbe0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
1bbf0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
1bc00 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
1bc10 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
1bc20 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
1bc30 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
1bc40 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
1bc50 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
1bc60 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
1bc70 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
1bc80 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
1bc90 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
1bca0 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
1bcb0 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
1bcc0 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
1bcd0 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
1bce0 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
1bcf0 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
1bd00 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
1bd10 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
1bd20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
1bd30 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
1bd40 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
1bd50 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
1bd60 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
1bd70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bd80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bd90 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1bda0 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
1bdb0 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
1bdc0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1bdd0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1bde0 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1bdf0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1be00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1be10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1be20 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1be30 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1be40 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
1be50 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1be60 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1be70 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1be80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1be90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1bea0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1beb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1bec0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1bed0 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
1bee0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1bef0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
1bf00 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
1bf10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bf20 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1bf30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1bf40 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1bf50 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1bf60 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
1bf70 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1bf80 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
1bf90 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1bfa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bfb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bfc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1bfd0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1bfe0 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
1bff0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1c000 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1c010 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1c020 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c030 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1c040 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c050 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1c060 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
1c070 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1c080 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1c090 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1c0a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1c0b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c0c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c0d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1c0e0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1c0f0 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
1c100 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1c110 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
1c120 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
1c130 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c140 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1c150 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c160 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1c170 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
1c180 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
1c190 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c1a0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1c1b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c1c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c1d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c1e0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c1f0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1c200 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
1c210 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1c220 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1c230 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1c240 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c250 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1c260 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c270 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c280 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
1c290 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
1c2a0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1c2b0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1c2c0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1c2d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c2e0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c2f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c300 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1c310 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
1c320 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
1c330 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1c340 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
1c350 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c360 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c370 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c380 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c390 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1c3a0 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
1c3b0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1c3c0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1c3d0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1c3e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c3f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c400 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c410 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1c420 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
1c430 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1c440 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1c450 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1c460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c470 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1c480 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c490 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c4a0 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
1c4b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1c4c0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1c4d0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1c4e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c4f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c500 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c510 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c520 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
1c530 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
1c540 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
1c550 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
1c560 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
1c570 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
1c580 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
1c590 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1c5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c5b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c5c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c5d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c5e0 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
1c5f0 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
1c600 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
1c610 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
1c620 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
1c630 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
1c640 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
1c650 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
1c660 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
1c670 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
1c680 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
1c690 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
1c6a0 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
1c6b0 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
1c6c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c6d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1c6e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c6f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c700 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
1c710 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
1c720 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
1c730 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c750 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c760 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c770 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
1c780 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
1c790 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
1c7a0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1c7b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c7c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c7d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c7e0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1c7f0 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
1c800 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
1c810 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
1c820 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
1c830 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c840 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c850 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1c860 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1c870 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
1c880 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
1c890 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
1c8a0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1c8b0 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
1c8c0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
1c8d0 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
1c8e0 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
1c8f0 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
1c900 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
1c910 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
1c920 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
1c930 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
1c940 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
1c950 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
1c960 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
1c970 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
1c980 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
1c990 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
1c9a0 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
1c9b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c9c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c9d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c9e0 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
1c9f0 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
1ca00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ca10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1ca20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ca30 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
1ca40 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
1ca50 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ca60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ca70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ca80 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1ca90 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
1caa0 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
1cab0 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
1cac0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cad0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1cae0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1caf0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1cb00 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
1cb10 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
1cb20 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1cb30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cb40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cb50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cb60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cb70 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
1cb80 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
1cb90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cba0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cbb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cbc0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1cbd0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1cbe0 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
1cbf0 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
1cc00 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
1cc10 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
1cc20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
1cc30 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
1cc40 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
1cc50 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
1cc60 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
1cc70 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
1cc80 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
1cc90 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1cca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ccb0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1ccc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1ccd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1cce0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
1ccf0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1cd00 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
1cd10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cd20 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1cd30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cd40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1cd50 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
1cd60 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
1cd70 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
1cd80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cd90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1cda0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cdb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1cdc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1cdd0 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65  _blob_close_inte
1cde0 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29  rop(IntPtr blob)
1cdf0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ce00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ce10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ce20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ce30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1ce40 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
1ce50 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
1ce60 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
1ce70 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
1ce80 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
1ce90 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
1cea0 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
1ceb0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1cec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ced0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1cee0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1cef0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1cf00 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
1cf10 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
1cf20 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
1cf30 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
1cf40 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
1cf50 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
1cf60 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
1cf70 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1cf80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1cf90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1cfa0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1cfb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1cfc0 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
1cfd0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
1cfe0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cff0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d000 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d010 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1d020 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
1d030 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
1d040 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
1d050 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1d060 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1d070 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
1d080 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
1d090 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
1d0a0 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
1d0b0 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
1d0c0 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
1d0d0 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
1d0e0 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
1d0f0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
1d100 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
1d110 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d120 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d130 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d140 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d150 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d160 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d170 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d180 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d190 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d1a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d1b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1d1c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1d1d0 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
1d1e0 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
1d1f0 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
1d200 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d210 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d220 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d230 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d240 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d250 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d260 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d270 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d280 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1d290 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d2a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d2b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d2c0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
1d2d0 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
1d2e0 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
1d2f0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1d300 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d310 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d320 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d330 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d340 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d350 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d360 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d370 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d380 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d390 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d3a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1d3b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1d3c0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
1d3d0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1d3e0 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
1d3f0 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
1d400 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
1d410 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
1d420 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
1d430 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
1d440 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
1d450 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
1d460 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d470 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d480 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d490 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d4a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d4b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d4c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d4d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d4e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d4f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d500 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d510 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d520 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
1d530 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
1d540 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d550 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d560 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d570 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d580 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d590 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d5a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d5b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d5c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d5d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d5e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1d5f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1d600 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
1d610 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
1d620 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1d630 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d640 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d660 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d670 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d680 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d690 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d6a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d6b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d6c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d6d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d6e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d6f0 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
1d700 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1d710 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d720 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d730 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d740 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d750 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d760 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d770 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d780 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d790 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d7a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d7b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d7c0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
1d7d0 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
1d7e0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d7f0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1d800 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d810 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d820 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d830 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d840 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d850 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d860 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d870 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d880 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d890 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d8a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d8b0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
1d8c0 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
1d8d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1d8e0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1d8f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d900 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d910 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d920 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d930 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d940 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d950 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d960 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d970 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d980 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d990 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1d9a0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1d9b0 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
1d9c0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d9d0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1d9e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d9f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1da00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1da10 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1da20 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1da30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1da40 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1da50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1da60 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1da70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1da80 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1da90 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1daa0 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
1dab0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1dac0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1dad0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dae0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1daf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1db00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1db10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1db20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1db30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1db40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1db50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1db60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1db70 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1db80 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
1db90 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
1dba0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1dbb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1dbc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dbd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1dbe0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dbf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1dc00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1dc10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1dc20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1dc30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dc40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dc50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dc60 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1dc70 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
1dc80 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1dc90 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1dca0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1dcb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1dcc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1dcd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1dce0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1dcf0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1dd00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1dd10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1dd20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1dd30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1dd40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1dd50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1dd60 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
1dd70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1dd80 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1dd90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dda0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ddb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ddc0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ddd0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1dde0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ddf0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1de00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1de10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1de20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1de30 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1de40 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
1de50 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
1de60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1de70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1de80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1de90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dea0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1deb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dec0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ded0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1dee0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1def0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1df00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1df10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1df20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1df30 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
1df40 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
1df50 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1df60 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1df70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1df80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1df90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1dfa0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1dfb0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1dfc0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dfd0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1dfe0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1dff0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e000 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e010 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1e020 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
1e030 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
1e040 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1e050 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e060 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e070 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e080 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e090 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e0a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e0b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e0c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e0d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e0e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e0f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e100 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1e110 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
1e120 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
1e130 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1e140 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e150 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e160 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e170 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e180 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e190 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e1a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e1b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e1c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e1d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e1e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e1f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1e200 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
1e210 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1e220 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1e230 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e240 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e250 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e260 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e270 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e280 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e290 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e2a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e2b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e2c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e2d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1e2e0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1e2f0 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
1e300 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e310 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1e320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e330 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e340 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e350 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e360 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e370 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e380 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e3a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e3b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e3c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1e3d0 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
1e3e0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1e3f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e420 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e430 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e440 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e450 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e470 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e480 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e490 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1e4a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1e4b0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
1e4c0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
1e4d0 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
1e4e0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
1e4f0 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
1e500 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
1e510 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
1e520 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e530 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e540 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e550 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e560 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e570 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e580 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e590 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e5a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e5b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e5c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e5d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1e5e0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
1e5f0 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
1e600 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
1e610 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
1e620 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
1e630 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
1e640 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1e650 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e660 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e670 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e680 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e690 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e6a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e6b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e6c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e6d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e6e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e6f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1e700 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1e710 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
1e720 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
1e730 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
1e740 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
1e750 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
1e760 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
1e770 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
1e780 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
1e790 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
1e7a0 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
1e7b0 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
1e7c0 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
1e7d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e7e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e7f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e800 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e810 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e820 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e830 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e840 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e850 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e860 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e870 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1e880 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
1e890 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
1e8a0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1e8b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e8c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e8d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e8e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e8f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e900 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e910 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e920 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e930 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e940 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e950 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1e960 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
1e970 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
1e980 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
1e990 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
1e9a0 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
1e9b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
1e9c0 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
1e9d0 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
1e9e0 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
1e9f0 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
1ea00 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
1ea10 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
1ea20 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
1ea30 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
1ea40 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
1ea50 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
1ea60 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
1ea70 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
1ea80 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
1ea90 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
1eaa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eab0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1eac0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ead0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1eae0 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
1eaf0 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
1eb00 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
1eb10 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
1eb20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
1eb30 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1eb40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1eb50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1eb60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1eb70 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
1eb80 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
1eb90 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
1eba0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
1ebb0 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
1ebc0 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
1ebd0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1ebe0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ebf0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1ec00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1ec10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1ec20 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
1ec30 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
1ec40 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
1ec50 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
1ec60 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
1ec70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ec80 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1ec90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1eca0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ecb0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
1ecc0 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
1ecd0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
1ece0 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
1ecf0 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
1ed00 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
1ed10 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
1ed20 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
1ed30 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
1ed40 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
1ed50 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
1ed60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ed70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1ed80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ed90 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1eda0 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
1edb0 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
1edc0 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
1edd0 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
1ede0 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
1edf0 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
1ee00 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
1ee10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
1ee20 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
1ee30 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
1ee40 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
1ee50 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
1ee60 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
1ee70 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
1ee80 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
1ee90 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
1eea0 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
1eeb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1eec0 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
1eed0 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
1eee0 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
1eef0 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
1ef00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ef10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ef20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ef30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ef40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ef50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ef60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ef70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ef80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ef90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1efa0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1efb0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
1efc0 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
1efd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1efe0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eff0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f000 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f010 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f030 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f040 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f050 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f060 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f070 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f080 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
1f090 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
1f0a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f0b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f0c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f0d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f0e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f0f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f100 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f110 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f150 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1f160 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
1f170 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f180 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f190 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f1a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f1b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f1c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f1d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f1e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f1f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f210 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f220 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1f230 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
1f240 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
1f250 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
1f260 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f270 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f290 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f2a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f2b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f2c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f2d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f2e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f2f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f300 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1f310 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
1f320 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
1f330 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f340 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f350 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f360 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f370 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f380 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f390 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f3a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f3b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f3c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f3d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f3e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f3f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
1f400 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
1f410 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  he(..        int
1f420 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
1f430 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f440 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f450 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f460 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f470 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f490 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f4a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f4b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f4c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f4d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1f4e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1f4f0 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
1f500 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
1f510 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
1f520 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
1f530 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f540 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f550 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f560 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f570 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f580 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f590 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f5a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f5b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f5c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f5d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f5e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f5f0 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  e sqlite3_load_e
1f600 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
1f610 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79     IntPtr db, by
1f620 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62  te[] fileName, b
1f630 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20  yte[] procName, 
1f640 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
1f650 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
1f660 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f670 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1f680 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f690 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1f6a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1f6b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1f6c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1f6d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f6e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1f6f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f700 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1f710 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1f720 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f  overload_functio
1f730 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  n(IntPtr db, Int
1f740 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  Ptr zName, int n
1f750 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49  Args);....#if WI
1f760 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54  NDOWS..#if !PLAT
1f770 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f780 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1f790 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f7a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1f7b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1f7c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
1f7d0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1f7e0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
1f7f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f800 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
1f810 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
1f820 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
1f830 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
1f840 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
1f850 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
1f860 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65  irectory" SQLite
1f870 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
1f880 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
1f890 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
1f8a0 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
1f8b0 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  s...    //..    
1f8c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f8d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f8e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
1f8f0 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f  in32_set_directo
1f900 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74  ry(uint type, st
1f910 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
1f920 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f  #if !DEBUG // NO
1f930 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57  TE: Should be "W
1f940 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d  IN32HEAP && !MEM
1f950 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41  DEBUG"..#if !PLA
1f960 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f970 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1f980 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f990 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1f9a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1f9b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f9c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f9d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f9e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1f9f0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
1fa00 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
1fa10 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
1fa20 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
1fa30 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
1fa40 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
1fa50 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
1fa60 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
1fa70 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
1fa80 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
1fa90 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
1faa0 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
1fab0 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
1fac0 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
1fad0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
1fae0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
1faf0 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
1fb00 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
1fb10 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
1fb20 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
1fb30 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
1fb40 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
1fb50 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
1fb60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fb70 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1fb80 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1fb90 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
1fba0 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eap();....#if !P
1fbb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fbc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1fbd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fbe0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1fbf0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1fc00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1fc10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1fc20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fc30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1fc40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
1fc50 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
1fc60 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
1fc70 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
1fc80 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
1fc90 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
1fca0 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
1fcb0 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
1fcc0 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
1fcd0 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
1fce0 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
1fcf0 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
1fd00 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
1fd10 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
1fd20 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1fd30 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1fd40 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
1fd50 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
1fd60 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1fd70 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
1fd80 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
1fd90 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
1fda0 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
1fdb0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
1fdc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1fdd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1fde0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
1fdf0 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69  pact_heap(ref ui
1fe00 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65  nt largest);..#e
1fe10 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
1fe20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fe30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fe40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fe50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1fe60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fe70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fe80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fe90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fea0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1feb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1fec0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fed0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1fee0 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
1fef0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ff00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ff10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ff20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ff30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ff40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ff50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ff60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ff70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ff80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ff90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ffa0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1ffb0 33 5f 6d 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e 67  3_malloc64(ulong
1ffc0 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   n);....#if !PLA
1ffd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ffe0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1fff0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20000 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20010 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20020 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20030 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
20040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20050 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
20060 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20070 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
20080 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
20090 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29  IntPtr p, int n)
200a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
200b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
200c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
200d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
200e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
200f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20100 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20110 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20150 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
20160 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 49  ite3_realloc64(I
20170 6e 74 50 74 72 20 70 2c 20 75 6c 6f 6e 67 20 6e  ntPtr p, ulong n
20180 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20190 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
201a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
201b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
201c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
201d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
201e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
201f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20200 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20210 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20220 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20230 65 78 74 65 72 6e 20 75 6c 6f 6e 67 20 73 71 6c  extern ulong sql
20240 69 74 65 33 5f 6d 73 69 7a 65 28 49 6e 74 50 74  ite3_msize(IntPt
20250 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
20260 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20270 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20290 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
202a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
202b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
202c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
202d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
202e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
202f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20300 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
20310 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50  qlite3_free(IntP
20320 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
20330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20360 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20370 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20380 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20390 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
203a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
203b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
203c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
203d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
203e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
203f0 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b  e3_open_v2(byte[
20400 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
20410 72 65 66 20 49 6e 74 50 74 72 20 64 62 2c 20 53  ref IntPtr db, S
20420 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e  QLiteOpenFlagsEn
20430 75 6d 20 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d  um flags, byte[]
20440 20 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   vfsName);....#i
20450 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20460 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20470 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20480 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20490 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
204a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
204b0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
204c0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
204d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
204e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
204f0 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
20500 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
20510 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20520 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20530 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20540 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
20550 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  n16(string fileN
20560 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
20570 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
20580 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20590 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
205a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
205b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
205c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
205d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
205e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
205f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20600 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
20610 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20620 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
20630 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
20640 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
20650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
206a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
206b0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
206c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
206d0 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
206e0 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
206f0 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  id(IntPtr db);..
20700 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
20710 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20720 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20730 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20740 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20750 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20760 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20770 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20780 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20790 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
207a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
207b0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
207c0 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49  qlite3_changes(I
207d0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
207e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
207f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20800 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20810 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20820 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20830 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20840 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
20850 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20860 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
20870 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a  memory_used();..
20880 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
20890 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
208a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
208b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
208c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
208d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
208e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
208f0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
20900 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
20910 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
20920 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74  ry_highwater(int
20930 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65   resetFlag);..#e
20940 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
20950 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20960 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20970 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20980 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20990 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
209a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
209b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
209c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
209d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
209e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
209f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
20a00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
20a10 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
20a20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20a30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20a40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20a50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20a60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20a70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20a80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20a90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20aa0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20ab0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20ac0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20ad0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20ae0 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
20af0 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c  meout(IntPtr db,
20b00 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66   int ms);....#if
20b10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20b20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20b30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20b40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20b50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20b60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20b70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20b80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20b90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20ba0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20bb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20bc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20bd0 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64  lite3_clear_bind
20be0 69 6e 67 73 28 49 6e 74 50 74 72 20 73 74 6d 74  ings(IntPtr stmt
20bf0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20c00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20c10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20c20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20c30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20c40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20c50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20c60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20c70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20c90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20ca0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20cb0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
20cc0 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ind_blob(IntPtr 
20cd0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
20ce0 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   Byte[] value, i
20cf0 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
20d00 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d   nTransient);...
20d10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20d20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20d30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20d40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20d50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20d60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20d70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
20d80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20d90 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
20da0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
20db0 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  nd_double(IntPtr
20dc0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
20dd0 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
20de0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
20df0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20e00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20e10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20e20 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20e30 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20e40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20e50 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20e60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20e70 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20e80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20e90 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20ea0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
20eb0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e  ite3_bind_int(In
20ec0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
20ed0 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29  ndex, int value)
20ee0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ;....    //..   
20ef0 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
20f00 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
20f10 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
20f20 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74  nt"; however, it
20f30 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f   has the..    //
20f40 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74         correct t
20f50 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f  ype signature fo
20f60 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33  r an unsigned (3
20f70 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  2-bit) integer..
20f80 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
20f90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20fa0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20fb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20fc0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
20fd0 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
20fe0 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  nt", CallingConv
20ff0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21000 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21010 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21020 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21030 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
21040 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
21050 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  _int")]..#endif.
21060 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21070 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
21080 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
21090 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e  te3_bind_uint(In
210a0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
210b0 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65  ndex, uint value
210c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
210d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
210e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
210f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21100 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21110 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21120 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21130 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21140 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21150 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21160 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e  e3_bind_int64(In
21170 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
21180 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  ndex, long value
21190 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
211a0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
211b0 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
211c0 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
211d0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20  e3_bind_int64"; 
211e0 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
211f0 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
21200 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
21210 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
21220 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36  unsigned long (6
21230 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  4-bit) integer..
21240 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
21250 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21260 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21270 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21280 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
21290 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
212a0 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nt64", CallingCo
212b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
212c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
212d0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
212e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
212f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21300 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
21310 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
21320 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f  , int index, ulo
21330 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
21340 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
21350 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21360 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21370 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21380 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21390 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
213a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
213b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
213c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
213d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
213e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
213f0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21400 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
21410 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ind_null(IntPtr 
21420 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
21430 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21440 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21450 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21460 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21470 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21480 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21490 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
214a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
214b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
214c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
214d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
214e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
214f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
21500 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  nd_text(IntPtr s
21510 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
21520 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
21530 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
21540 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
21550 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21560 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21580 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21590 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
215a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
215b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
215c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
215d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
215e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
215f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21600 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
21610 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
21620 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
21630 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21640 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21650 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21660 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21670 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21680 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21690 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
216a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
216b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
216c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
216d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
216e0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
216f0 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
21700 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  dex(IntPtr stmt,
21710 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29   byte[] strName)
21720 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21730 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21740 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21760 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21770 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21780 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21790 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
217a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
217b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
217c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
217d0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
217e0 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49  3_column_count(I
217f0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
21800 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21810 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21830 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21860 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21870 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21880 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21890 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
218a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
218b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
218c0 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e   sqlite3_step(In
218d0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
218e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
218f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21900 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21910 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21920 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21930 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21940 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21950 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21960 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21970 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21980 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21990 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  int sqlite3_stmt
219a0 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72  _readonly(IntPtr
219b0 20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34   stmt); /* 3.7.4
219c0 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  + */....#if !PLA
219d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
219e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
219f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21a00 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21a10 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21a20 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21a30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21a40 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75  tatic extern dou
21a50 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ble sqlite3_colu
21a60 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  mn_double(IntPtr
21a70 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21a80 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
21a90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21aa0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21ab0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21ac0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21ad0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21ae0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21af0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
21b00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21b10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21b20 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21b30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
21b40 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
21b50 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  n_int(IntPtr stm
21b60 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
21b70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21b80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21b90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21ba0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21bb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21bc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21bd0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
21be0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21bf0 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
21c00 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
21c10 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
21c20 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69  t index);..#endi
21c30 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
21c40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21c50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21c70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21c80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21c90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21ca0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21cc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21cd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21ce0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
21cf0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
21d00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
21d10 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
21d20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21d30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21d40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21d50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21d60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21d70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21d80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21d90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21da0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21db0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21dc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
21dd0 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
21de0 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73 74  _bytes(IntPtr st
21df0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
21e00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21e10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21e20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21e30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21e40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21e50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21e60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21e70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21e80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21e90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21ea0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21eb0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
21ec0 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49  column_bytes16(I
21ed0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
21ee0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
21ef0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21f00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21f10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21f20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21f30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21f40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21f50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21f60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21f70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21f80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21f90 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65  atic extern Type
21fa0 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33  Affinity sqlite3
21fb0 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74  _column_type(Int
21fc0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
21fd0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
21fe0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21ff0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22000 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22010 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22020 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22030 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22040 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22050 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22060 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22080 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22090 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
220a0 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
220b0 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  on(IntPtr db, by
220c0 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
220d0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
220e0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f  pvUser, SQLiteCo
220f0 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a  llation func);..
22100 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22110 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22140 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22150 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22170 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22190 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
221a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
221b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61  rn int sqlite3_a
221c0 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49  ggregate_count(I
221d0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
221e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
221f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22200 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22210 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22220 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22230 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22240 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22250 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22260 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22270 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22280 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22290 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
222a0 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e  e3_value_blob(In
222b0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
222c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
222d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
222e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
222f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22300 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22310 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22320 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22330 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22340 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22350 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22360 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22370 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
22380 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d  ytes(IntPtr p);.
22390 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
223a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
223b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
223c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
223d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
223e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
223f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22400 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22410 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22430 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22440 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
22450 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e  value_bytes16(In
22460 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
22470 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22480 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22490 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
224a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
224b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
224c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
224d0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
224e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
224f0 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
22500 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74  value_double(Int
22510 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d  Ptr p);..#endif.
22520 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22530 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22540 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22550 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22560 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22570 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22580 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22590 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
225a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
225b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
225c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
225d0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
225e0 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72  value_int(IntPtr
225f0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
22600 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22610 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22620 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22630 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22640 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22650 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22660 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22670 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
22680 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  g sqlite3_value_
22690 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b  int64(IntPtr p);
226a0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
226b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
226c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
226d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
226e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
226f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22700 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22710 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22720 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22730 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22740 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22750 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
22760 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
22770 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74  3_value_type(Int
22780 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
22790 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
227a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
227b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
227c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
227d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
227e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
227f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22800 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22810 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22820 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22830 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
22840 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
22850 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
22860 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  ext, byte[] valu
22870 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
22880 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
22890 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
228a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
228b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
228c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
228d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
228e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
228f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
22900 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22910 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
22920 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
22930 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  uble(IntPtr cont
22940 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75  ext, double valu
22950 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
22960 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22970 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22980 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22990 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
229a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
229b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
229c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
229d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
229e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
229f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22a00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22a10 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
22a20 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72  ult_error(IntPtr
22a30 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
22a40 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65   strErr, int nLe
22a50 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
22a60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22a70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22a80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22a90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22aa0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22ab0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22ac0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22ad0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22ae0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22af0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22b00 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
22b10 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
22b20 72 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f  r_code(IntPtr co
22b30 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72  ntext, SQLiteErr
22b40 6f 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a  orCode value);..
22b50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22b60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22b70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22b80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22b90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22ba0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22bb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22bc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22bd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22be0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22bf0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22c00 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
22c10 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f  result_error_too
22c20 62 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  big(IntPtr conte
22c30 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
22c40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22c50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22c60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22c70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22c80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22c90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22ca0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22cb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22cc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22cd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22ce0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22cf0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
22d00 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20  or_nomem(IntPtr 
22d10 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
22d20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22d30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22d40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22d50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22d60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22d70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22d80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22d90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22da0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22db0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22dc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
22dd0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
22de0 74 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63  t_value(IntPtr c
22df0 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76  ontext, IntPtr v
22e00 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
22e10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22e20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22e30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22e40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22e50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22e60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22e70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22e80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22e90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22ea0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22eb0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
22ec0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a  sqlite3_result_z
22ed0 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63  eroblob(IntPtr c
22ee0 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e  ontext, int nLen
22ef0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22f00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22f10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22f20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22f30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22f40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22f50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22f60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22f70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22f80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22f90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22fa0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
22fb0 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49  te3_result_int(I
22fc0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
22fd0 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  nt value);....#i
22fe0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22ff0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23000 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23010 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23020 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23030 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23040 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
23050 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23060 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
23070 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74  result_int64(Int
23080 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e  Ptr context, lon
23090 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
230a0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
230b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
230c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
230d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
230e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
230f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23100 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23110 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23150 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
23160 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49  e3_result_null(I
23170 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
23180 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23190 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
231a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
231b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
231c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
231d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
231e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
231f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23200 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23210 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23220 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23230 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
23240 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74  _result_text(Int
23250 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
23260 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
23270 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  Len, IntPtr pvRe
23280 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
23290 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
232a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
232b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
232c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
232d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
232e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
232f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23300 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23310 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23320 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23330 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
23340 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72  Ptr sqlite3_aggr
23350 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e  egate_context(In
23360 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
23370 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69  t nBytes);....#i
23380 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23390 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
233a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
233b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
233c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
233d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
233e0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
233f0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
23400 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23410 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23420 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
23430 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
23440 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23450 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23460 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23470 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
23480 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  d_text16(IntPtr 
23490 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
234a0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69   string value, i
234b0 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
234c0 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
234d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
234e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
234f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23500 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23510 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23520 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23530 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
23540 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
23550 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
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 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
23580 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
23590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
235a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
235b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
235c0 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
235d0 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  16(IntPtr contex
235e0 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d  t, string strNam
235f0 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  e, int nLen);...
23600 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23610 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23630 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23640 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23660 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
23670 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
23680 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
23690 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
236a0 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
236b0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
236c0 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
236d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
236e0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
236f0 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
23700 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  16(IntPtr contex
23710 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d  t, string strNam
23720 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74  e, int nLen, Int
23730 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
23740 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
23750 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50  CODEC || INTEROP
23760 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69  _INCLUDE_SEE..#i
23770 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23780 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23790 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
237a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
237b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
237c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
237d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
237e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
237f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23800 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23810 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23820 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23830 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74  qlite3_key(IntPt
23840 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
23850 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a  , int keylen);..
23860 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23870 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23880 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23890 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
238a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
238b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
238c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
238d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
238e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
238f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23900 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23910 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
23920 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79  de sqlite3_rekey
23930 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
23940 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
23950 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  en);..#endif....
23960 23 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c  #if INTEROP_INCL
23970 55 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20  UDE_ZIPVFS..#if 
23980 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23990 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
239a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
239b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
239c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
239d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
239e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
239f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23a00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23a10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23a20 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
23a30 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 32 28  d zipvfsInit_v2(
23a40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23a50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23a60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23a70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23a80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23a90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23aa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23ab0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23ac0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23ad0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23ae0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23af0 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76  extern void zipv
23b00 66 73 49 6e 69 74 5f 76 33 28 69 6e 74 20 72 65  fsInit_v3(int re
23b10 67 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  gDflt);..#endif.
23b20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23b30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23b40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23b50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23b60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23b70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23b80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23b90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23ba0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23bb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23bc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23bd0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
23be0 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65  _progress_handle
23bf0 72 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  r(IntPtr db, int
23c00 20 6f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f 67   ops, SQLiteProg
23c10 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e  ressCallback fun
23c20 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
23c30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23c40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23c50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23c60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23c70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23c80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23c90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23ca0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23cb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23cc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23cd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23ce0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
23cf0 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
23d00 69 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20  izer(IntPtr db, 
23d10 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
23d20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
23d30 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
23d40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23d50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23d60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23d70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23d80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23d90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23da0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23db0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23dc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23dd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23de0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23df0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
23e00 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e  3_update_hook(In
23e10 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55  tPtr db, SQLiteU
23e20 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  pdateCallback fu
23e30 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
23e40 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
23e50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23e60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23e70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23e80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23e90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23ea0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23eb0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23ec0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23ed0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23ee0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23ef0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
23f00 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f  qlite3_commit_ho
23f10 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
23f20 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61  LiteCommitCallba
23f30 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
23f40 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
23f50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23f60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23f70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23f80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23f90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23fa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23fb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23fc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23fd0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23fe0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23ff0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
24000 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63  Ptr sqlite3_trac
24010 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  e(IntPtr db, SQL
24020 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b  iteTraceCallback
24030 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
24040 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
24050 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24060 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24070 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24080 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24090 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
240a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
240b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
240c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
240d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
240e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
240f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
24100 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f  r sqlite3_trace_
24110 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  v2(IntPtr db, SQ
24120 4c 69 74 65 54 72 61 63 65 46 6c 61 67 73 20 6d  LiteTraceFlags m
24130 61 73 6b 2c 20 53 51 4c 69 74 65 54 72 61 63 65  ask, SQLiteTrace
24140 43 61 6c 6c 62 61 63 6b 32 20 66 75 6e 63 2c 20  Callback2 func, 
24150 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
24160 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20  ...    // Since 
24170 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
24180 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c   takes a variabl
24190 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c  e argument list,
241a0 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72   we have to over
241b0 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e  load declaration
241c0 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c  s..    // for al
241d0 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73  l possible calls
241e0 20 74 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f   that we want to
241f0 20 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54   use...#if !PLAT
24200 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24210 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24220 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24230 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
24240 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
24250 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24260 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24270 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24280 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24290 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
242a0 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
242b0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
242c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
242d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
242e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
242f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
24300 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65  nfig_none(SQLite
24310 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
24320 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24330 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24340 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24360 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
24370 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20  qlite3_config", 
24380 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24390 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
243a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
243b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
243c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
243d0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
243e0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d  qlite3_config")]
243f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24400 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24410 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24420 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  Code sqlite3_con
24430 66 69 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f  fig_int(SQLiteCo
24440 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  nfigOpsEnum op, 
24450 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
24460 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24470 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24480 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24490 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
244a0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
244b0 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
244c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
244d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
244e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
244f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24500 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
24510 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
24520 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
24530 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
24540 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
24550 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24560 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67  lite3_config_log
24570 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
24580 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c  Enum op, SQLiteL
24590 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ogCallback func,
245a0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
245b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
245c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
245d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
245e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
245f0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
24600 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c  ite3_db_config",
24610 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24620 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24630 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24640 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24660 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
24670 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
24680 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
24690 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
246a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
246b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
246c0 5f 64 62 5f 63 6f 6e 66 69 67 5f 63 68 61 72 70  _db_config_charp
246d0 74 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  tr(IntPtr db, SQ
246e0 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
246f0 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 63  num op, IntPtr c
24700 68 61 72 50 74 72 29 3b 0d 0a 0d 0a 23 69 66 20  harPtr);....#if 
24710 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24720 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24730 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24740 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
24750 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
24760 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
24770 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24780 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24790 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
247a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
247b0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
247c0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
247d0 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  db_config")]..#e
247e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
247f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24800 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24810 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66   sqlite3_db_conf
24820 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e  ig_int_refint(In
24830 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43  tPtr db, SQLiteC
24840 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f  onfigDbOpsEnum o
24850 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c 20 72 65  p, int value, re
24860 66 20 69 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a  f int result);..
24870 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24880 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24890 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
248a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
248b0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
248c0 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43  e3_db_config", C
248d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
248e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
248f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24900 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24910 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24920 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
24930 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
24940 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24950 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24960 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
24970 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64  orCode sqlite3_d
24980 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 70 74 72 5f  b_config_intptr_
24990 74 77 6f 5f 69 6e 74 73 28 49 6e 74 50 74 72 20  two_ints(IntPtr 
249a0 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67  db, SQLiteConfig
249b0 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e  DbOpsEnum op, In
249c0 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20 69 6e  tPtr ptr, int in
249d0 74 30 2c 20 69 6e 74 20 69 6e 74 31 29 3b 0d 0a  t0, int int1);..
249e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
249f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24a00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24a10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24a20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24a30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24a40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
24a50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24a60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24a70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
24a80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24a90 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
24aa0 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 73 74  de sqlite3_db_st
24ab0 61 74 75 73 28 49 6e 74 50 74 72 20 64 62 2c 20  atus(IntPtr db, 
24ac0 53 51 4c 69 74 65 53 74 61 74 75 73 4f 70 73 45  SQLiteStatusOpsE
24ad0 6e 75 6d 20 6f 70 2c 20 72 65 66 20 69 6e 74 20  num op, ref int 
24ae0 63 75 72 72 65 6e 74 2c 20 72 65 66 20 69 6e 74  current, ref int
24af0 20 68 69 67 68 77 61 74 65 72 2c 20 69 6e 74 20   highwater, int 
24b00 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23  resetFlag);....#
24b10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24b20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24b30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24b40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24b50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24b60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24b70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24b80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24b90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24ba0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24bb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24bc0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72  IntPtr sqlite3_r
24bd0 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74  ollback_hook(Int
24be0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f  Ptr db, SQLiteRo
24bf0 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66  llbackCallback f
24c00 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
24c10 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
24c20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24c30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24c40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24c50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24c60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24c70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24c80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24c90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24ca0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
24cb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24cc0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
24cd0 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c  sqlite3_db_handl
24ce0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  e(IntPtr stmt);.
24cf0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24d00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24d10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24d20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24d30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24d40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24d50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24d60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24d70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24d80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24d90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24da0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24db0 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  ode sqlite3_db_r
24dc0 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e  elease_memory(In
24dd0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
24de0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24df0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24e00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24e10 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
24e20 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
24e30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
24e40 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
24e50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24e60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
24e70 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
24e80 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
24e90 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
24ea0 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20  filename(IntPtr 
24eb0 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
24ec0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
24ed0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24ee0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24ef0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24f00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24f10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24f20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24f30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24f40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24f50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24f60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24f70 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
24f80 74 65 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28  te3_db_readonly(
24f90 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
24fa0 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  r dbName);....#i
24fb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24fc0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24fd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24fe0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
24ff0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
25000 62 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c  b_filename", Cal
25010 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25020 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25030 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25040 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25050 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
25060 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
25070 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22  te3_db_filename"
25080 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25090 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
250a0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
250b0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
250c0 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 64  e_bytes(IntPtr d
250d0 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
250e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
250f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25100 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25110 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25120 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25130 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25140 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25150 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25170 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25180 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25190 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
251a0 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28  lite3_next_stmt(
251b0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
251c0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
251d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
251e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
251f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25200 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25210 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25220 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25230 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25240 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25250 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25260 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25270 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
25280 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
25290 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72  ite3_exec(IntPtr
252a0 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53   db, byte[] strS
252b0 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c  ql, IntPtr pvCal
252c0 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76  lback, IntPtr pv
252d0 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50 74  Param, ref IntPt
252e0 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69  r errMsg);....#i
252f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25300 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25320 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25330 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25350 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
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 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25380 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25390 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
253a0 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  nt sqlite3_relea
253b0 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42  se_memory(int nB
253c0 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ytes);....#if !P
253d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
253e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
253f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25400 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25410 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25420 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25430 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25440 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25450 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25460 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25470 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
25480 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63  qlite3_get_autoc
25490 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29  ommit(IntPtr db)
254a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
254b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
254c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
254d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
254e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
254f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25500 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25510 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25520 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25530 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25540 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25550 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25560 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
25570 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f  tended_result_co
25580 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69  des(IntPtr db, i
25590 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69  nt onoff);....#i
255a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
255b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
255c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
255d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
255e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
255f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25600 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25610 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25620 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25630 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25640 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25650 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25660 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49  qlite3_errcode(I
25670 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
25680 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25690 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
256a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
256b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
256c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
256d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
256e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
256f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25700 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25710 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25720 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25730 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25740 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
25750 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
25760 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
25770 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25780 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25790 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
257a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
257b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
257c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
257d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
257e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
257f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25800 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25810 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
25820 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53 51  qlite3_errstr(SQ
25830 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63  LiteErrorCode rc
25840 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f  ); /* 3.7.15+ */
25850 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65  ....    // Since
25860 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74   sqlite3_log() t
25870 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20  akes a variable 
25880 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77  argument list, w
25890 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f  e have to overlo
258a0 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d  ad declarations.
258b0 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20  .    // for all 
258c0 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20  possible calls. 
258d0 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65   For now, we are
258e0 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61   only exposing a
258f0 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20   single string, 
25900 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65  and..    // depe
25910 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72  nd on the caller
25920 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73   to format the s
25930 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41  tring...#if !PLA
25940 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25950 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25960 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25970 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25980 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25990 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
259a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
259b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
259c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
259d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
259e0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
259f0 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65  lite3_log(SQLite
25a00 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f  ErrorCode iErrCo
25a10 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d  de, byte[] zForm
25a20 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  at);....#if !PLA
25a30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25a40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25a50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25a60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25a70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25a80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25a90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25ab0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25ac0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25ad0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
25ae0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
25af0 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e  _file_control(In
25b00 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
25b10 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c  zDbName, int op,
25b20 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a   IntPtr pArg);..
25b30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25b40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25b50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25b60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25b70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25b80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25b90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25ba0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25bb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25bc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25bd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25be0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
25bf0 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e  3_backup_init(In
25c00 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79 74  tPtr destDb, byt
25c10 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49  e[] zDestName, I
25c20 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20  ntPtr sourceDb, 
25c30 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61  byte[] zSourceNa
25c40 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
25c50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25c60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25c70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25c80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25c90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25ca0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25cb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25cc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25cd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25ce0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25cf0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
25d00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
25d10 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74  _backup_step(Int
25d20 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20  Ptr backup, int 
25d30 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nPage);....#if !
25d40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25d50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25d70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25d80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25d90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25da0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25dc0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25dd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25de0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
25df0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72  sqlite3_backup_r
25e00 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20  emaining(IntPtr 
25e10 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  backup);....#if 
25e20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25e30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25e40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25e50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25e60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25e70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25e80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25e90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25ea0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25eb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25ec0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
25ed0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
25ee0 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72  pagecount(IntPtr
25ef0 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
25f00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25f10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25f20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25f30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
25f40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25f50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25f60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25f70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25f80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
25f90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25fa0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
25fb0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
25fc0 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65  lite3_blob_close
25fd0 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
25fe0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25ff0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26000 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26010 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
26020 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
26030 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26040 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
26050 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
26060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
26070 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
26080 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
26090 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
260a0 6c 6f 62 5f 62 79 74 65 73 28 49 6e 74 50 74 72  lob_bytes(IntPtr
260b0 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21   blob);....#if !
260c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
260d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
260e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
260f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26100 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26110 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26120 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26130 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26140 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26150 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26160 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26170 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26180 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e  te3_blob_open(In
26190 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
261a0 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
261b0 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
261c0 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77  olName, long row
261d0 49 64 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 72  Id, int flags, r
261e0 65 66 20 49 6e 74 50 74 72 20 70 74 72 42 6c 6f  ef IntPtr ptrBlo
261f0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
26200 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26210 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
26220 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26230 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
26240 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
26250 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26260 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26270 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26280 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26290 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
262a0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
262b0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
262c0 62 6c 6f 62 5f 72 65 61 64 28 49 6e 74 50 74 72  blob_read(IntPtr
262d0 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41   blob, [MarshalA
262e0 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e  s(UnmanagedType.
262f0 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d  LPArray)] byte[]
26300 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75   buffer, int cou
26310 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b  nt, int offset);
26320 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26330 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26340 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26360 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26370 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26380 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26390 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
263a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
263b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
263c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
263d0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
263e0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
263f0 62 5f 72 65 6f 70 65 6e 28 49 6e 74 50 74 72 20  b_reopen(IntPtr 
26400 62 6c 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64  blob, long rowId
26410 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26420 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26430 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
26440 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
26450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26460 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
26470 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26480 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
26490 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
264a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
264b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
264c0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
264d0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
264e0 6c 6f 62 5f 77 72 69 74 65 28 49 6e 74 50 74 72  lob_write(IntPtr
264f0 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41   blob, [MarshalA
26500 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e  s(UnmanagedType.
26510 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d  LPArray)] byte[]
26520 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75   buffer, int cou
26530 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b  nt, int offset);
26540 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26550 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26560 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26590 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
265a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
265b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
265c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
265d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
265e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
265f0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
26600 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63  Code sqlite3_dec
26610 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72  lare_vtab(IntPtr
26620 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c   db, IntPtr zSQL
26630 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26650 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
26660 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
26670 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26680 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
26690 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
266a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
266b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
266c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
266d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
266e0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
266f0 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e  lite3_mprintf(In
26700 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61  tPtr format, __a
26710 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65  rglist);..    #e
26720 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
26730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26780 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49     // SQLite API
26790 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20   calls that are 
267a0 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c  provided by "wel
267b0 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69  l-known" extensi
267c0 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20  ons that may be 
267d0 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20  statically..    
267e0 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74  // linked with t
267f0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
26800 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75  ative library cu
26810 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d  rrently in use..
26820 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74  .    #region ext
26830 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70  ension sqlite ap
26840 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  i calls..    #re
26850 67 69 6f 6e 20 76 69 72 74 75 61 6c 20 74 61 62  gion virtual tab
26860 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  le..#if INTEROP_
26870 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23  VIRTUAL_TABLE..#
26880 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26890 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
268a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
268b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
268c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
268d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
268e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
268f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26900 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26910 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26920 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26930 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
26940 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
26950 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 64  _module(IntPtr d
26960 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20  b, IntPtr name, 
26970 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ref sqlite3_modu
26980 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74  le module, IntPt
26990 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 78  r pClientData, x
269a0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44  DestroyModule xD
269b0 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20  estroy);....#if 
269c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
269d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
269e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
269f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
26a00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
26a10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
26a20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
26a30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26a40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
26a50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
26a60 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
26a70 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73  d sqlite3_dispos
26a80 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  e_module(IntPtr 
26a90 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69  pModule);..#endi
26aa0 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
26ab0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
26ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
26b10 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65 78 74 65  ion session exte
26b20 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e 54 45 52  nsion..#if INTER
26b30 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58 54 45 4e  OP_SESSION_EXTEN
26b40 53 49 4f 4e 0d 0a 23 69 66 20 21 50 4c 41 54 46  SION..#if !PLATF
26b50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26b60 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
26b70 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
26b80 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
26b90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26ba0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
26bb0 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 69 6e 74  nal delegate int
26bc0 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 28   xSessionFilter(
26bd0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
26be0 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 29  IntPtr pTblName)
26bf0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26c00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26c10 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
26c20 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
26c30 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
26c40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26c50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26c60 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  al delegate SQLi
26c70 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c  teChangeSetConfl
26c80 69 63 74 52 65 73 75 6c 74 20 78 53 65 73 73 69  ictResult xSessi
26c90 6f 6e 43 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74  onConflict(IntPt
26ca0 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
26cb0 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69  eChangeSetConfli
26cc0 63 74 54 79 70 65 20 74 79 70 65 2c 20 49 6e 74  ctType type, Int
26cd0 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a  Ptr iterator);..
26ce0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26cf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26d00 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
26d10 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
26d20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26d30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
26d40 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26d50 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
26d60 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f  rrorCode xSessio
26d70 6e 49 6e 70 75 74 28 49 6e 74 50 74 72 20 63 6f  nInput(IntPtr co
26d80 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44  ntext, IntPtr pD
26d90 61 74 61 2c 20 72 65 66 20 69 6e 74 20 6e 44 61  ata, ref int nDa
26da0 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ta);....#if !PLA
26db0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26dc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
26dd0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
26de0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
26df0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26e00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26e10 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53  ernal delegate S
26e20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
26e30 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 28 49 6e  SessionOutput(In
26e40 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
26e50 74 50 74 72 20 70 44 61 74 61 2c 20 69 6e 74 20  tPtr pData, int 
26e60 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f  nData);....    /
26e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
26ec0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26ed0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26ee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
26ef0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
26f00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
26f10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26f20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
26f30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26f40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
26f50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
26f60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
26f70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
26f80 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 72  qlite3session_cr
26f90 65 61 74 65 28 49 6e 74 50 74 72 20 64 62 2c 20  eate(IntPtr db, 
26fa0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 72  byte[] dbName, r
26fb0 65 66 20 49 6e 74 50 74 72 20 73 65 73 73 69 6f  ef IntPtr sessio
26fc0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
26fd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26fe0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
26ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27000 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27010 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27020 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27030 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27050 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27060 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27070 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
27080 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65  ite3session_dele
27090 74 65 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  te(IntPtr sessio
270a0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
270b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
270c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
270d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
270e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
270f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27100 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27110 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27120 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27130 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27140 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27150 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
27160 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c  te3session_enabl
27170 65 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  e(IntPtr session
27180 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a  , int enable);..
27190 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
271a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
271b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
271c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
271d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
271e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
271f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
27200 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
27210 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
27220 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
27230 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
27240 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65  rn int sqlite3se
27250 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28 49  ssion_indirect(I
27260 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69  ntPtr session, i
27270 6e 74 20 69 6e 64 69 72 65 63 74 29 3b 0d 0a 0d  nt indirect);...
27280 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27290 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
272a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
272b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
272c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
272d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
272e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
272f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27300 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
27310 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27320 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27330 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27340 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
27350 5f 61 74 74 61 63 68 28 49 6e 74 50 74 72 20 73  _attach(IntPtr s
27360 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 74  ession, byte[] t
27370 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  blName);....#if 
27380 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27390 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
273a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
273b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
273c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
273d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
273e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
273f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27400 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
27410 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27420 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
27430 64 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  d sqlite3session
27440 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72 28 49 6e  _table_filter(In
27450 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78 53  tPtr session, xS
27460 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69  essionFilter xFi
27470 6c 74 65 72 2c 20 49 6e 74 50 74 72 20 63 6f 6e  lter, IntPtr con
27480 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
27490 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
274a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
274b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
274c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
274d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
274e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
274f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
27500 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27510 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
27520 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
27530 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
27540 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
27550 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65  e3session_change
27560 73 65 74 28 49 6e 74 50 74 72 20 73 65 73 73 69  set(IntPtr sessi
27570 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 43 68 61  on, ref int nCha
27580 6e 67 65 53 65 74 2c 20 72 65 66 20 49 6e 74 50  ngeSet, ref IntP
27590 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b 0a  tr pChangeSet);.
275a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
275b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
275c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
275d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
275e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
275f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
27600 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
27610 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
27620 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
27630 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
27640 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
27650 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
27660 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
27670 6e 5f 64 69 66 66 28 49 6e 74 50 74 72 20 73 65  n_diff(IntPtr se
27680 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 66 72  ssion, byte[] fr
27690 6f 6d 44 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  omDbName, byte[]
276a0 20 74 62 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e   tblName, ref In
276b0 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d  tPtr errMsg);...
276c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
276d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
276e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
276f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27700 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27710 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27720 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
27730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27740 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
27750 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27760 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27770 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27780 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
27790 5f 70 61 74 63 68 73 65 74 28 49 6e 74 50 74 72  _patchset(IntPtr
277a0 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e   session, ref in
277b0 74 20 6e 50 61 74 63 68 53 65 74 2c 20 72 65 66  t nPatchSet, ref
277c0 20 49 6e 74 50 74 72 20 70 50 61 74 63 68 53 65   IntPtr pPatchSe
277d0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
277e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
277f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
27800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27810 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27820 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27830 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27840 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27860 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27870 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27880 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
27890 74 65 33 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70  te3session_isemp
278a0 74 79 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  ty(IntPtr sessio
278b0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
278c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
278d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
278e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
278f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27900 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27910 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27920 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27930 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27940 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27950 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27960 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27970 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
27980 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 28 72  hangeset_start(r
27990 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74  ef IntPtr iterat
279a0 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53  or, int nChangeS
279b0 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e  et, IntPtr pChan
279c0 67 65 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  geSet);....#if !
279d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
279e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
279f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27a00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27a10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27a20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27a30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27a40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27a50 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27a60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27a70 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27a80 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27a90 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 78  te3changeset_nex
27aa0 74 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  t(IntPtr iterato
27ab0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
27ac0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27ad0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
27ae0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27af0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27b00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27b10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27b20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27b30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27b40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27b50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27b60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27b70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
27b80 68 61 6e 67 65 73 65 74 5f 6f 70 28 49 6e 74 50  hangeset_op(IntP
27b90 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66  tr iterator, ref
27ba0 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65   IntPtr pTblName
27bb0 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d  , ref int nColum
27bc0 6e 73 2c 20 72 65 66 20 53 51 4c 69 74 65 41 75  ns, ref SQLiteAu
27bd0 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f  thorizerActionCo
27be0 64 65 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 62  de op, ref int b
27bf0 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69  Indirect);....#i
27c00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27c10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27c20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
27c30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
27c40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
27c50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27c60 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
27c70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27c80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
27c90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27ca0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
27cb0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
27cc0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
27cd0 70 6b 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  pk(IntPtr iterat
27ce0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  or, ref IntPtr p
27cf0 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 72 65 66  PrimaryKeys, ref
27d00 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29 3b 0d   int nColumns);.
27d10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27d20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27d30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27d40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27d50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27d60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27d70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
27d80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
27d90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
27da0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
27db0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27dc0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
27dd0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
27de0 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50 74 72 20  eset_old(IntPtr 
27df0 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f  iterator, int co
27e00 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49  lumnIndex, ref I
27e10 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a  ntPtr pValue);..
27e20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
27e30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27e40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27e50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
27e60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
27e70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
27e80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
27e90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
27ea0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
27eb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
27ec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
27ed0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
27ee0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
27ef0 73 65 74 5f 6e 65 77 28 49 6e 74 50 74 72 20 69  set_new(IntPtr i
27f00 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c  terator, int col
27f10 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e  umnIndex, ref In
27f20 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d  tPtr pValue);...
27f30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27f40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27f50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27f60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27f70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27f80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27f90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
27fa0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27fb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
27fc0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27fd0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27fe0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27ff0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
28000 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49 6e 74 50  et_conflict(IntP
28010 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
28020 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65   columnIndex, re
28030 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29  f IntPtr pValue)
28040 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28050 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28060 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
28070 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
28080 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28090 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
280a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
280b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
280c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
280d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
280e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
280f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28100 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28110 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69  ngeset_fk_confli
28120 63 74 73 28 49 6e 74 50 74 72 20 69 74 65 72 61  cts(IntPtr itera
28130 74 6f 72 2c 20 72 65 66 20 69 6e 74 20 63 6f 6e  tor, ref int con
28140 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23 69 66 20  flicts);....#if 
28150 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28160 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28180 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28190 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
281a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
281b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
281c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
281d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
281e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
281f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28200 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28210 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66 69  ite3changeset_fi
28220 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 69 74  nalize(IntPtr it
28230 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  erator);....#if 
28240 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28250 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28270 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28280 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28290 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
282a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
282b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
282c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
282d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
282e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
282f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28300 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e  ite3changeset_in
28310 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c 20 49 6e  vert(int nIn, In
28320 74 50 74 72 20 70 49 6e 2c 20 72 65 66 20 69 6e  tPtr pIn, ref in
28330 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50  t nOut, ref IntP
28340 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66  tr pOut);....#if
28350 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28360 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28370 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28380 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
28390 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
283a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
283b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
283c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
283d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
283e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
283f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
28400 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
28410 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63  lite3changeset_c
28420 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c 20 49 6e  oncat(int nA, In
28430 74 50 74 72 20 70 41 2c 20 69 6e 74 20 6e 42 2c  tPtr pA, int nB,
28440 20 49 6e 74 50 74 72 20 70 42 2c 20 72 65 66 20   IntPtr pB, ref 
28450 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e  int nOut, ref In
28460 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23  tPtr pOut);....#
28470 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28480 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28490 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
284a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
284b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
284c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
284d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
284e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
284f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28500 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28510 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28520 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28530 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
28540 75 70 5f 6e 65 77 28 72 65 66 20 49 6e 74 50 74  up_new(ref IntPt
28550 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d  r changeGroup);.
28560 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28570 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28580 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
28590 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
285a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
285b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
285c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
285d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
285e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
285f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28600 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28610 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28620 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
28630 65 67 72 6f 75 70 5f 61 64 64 28 49 6e 74 50 74  egroup_add(IntPt
28640 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 69  r changeGroup, i
28650 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74 50 74 72  nt nData, IntPtr
28660 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20   pData);....#if 
28670 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28680 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
286a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
286b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
286c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
286d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
286e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
286f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28700 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28710 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28720 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28730 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
28740 6f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63 68  output(IntPtr ch
28750 61 6e 67 65 47 72 6f 75 70 2c 20 72 65 66 20 69  angeGroup, ref i
28760 6e 74 20 6e 44 61 74 61 2c 20 72 65 66 20 49 6e  nt nData, ref In
28770 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a  tPtr pData);....
28780 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28790 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
287a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
287b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
287c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
287d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
287e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
287f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28800 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28810 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28820 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28830 20 76 6f 69 64 20 73 71 6c 69 74 65 33 63 68 61   void sqlite3cha
28840 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65 74 65 28  ngegroup_delete(
28850 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
28860 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
28870 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28880 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
288a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
288b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
288c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
288d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
288e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
288f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28900 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28910 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28920 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28930 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 28  changeset_apply(
28940 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6e  IntPtr db, int n
28950 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74 50 74  ChangeSet, IntPt
28960 72 20 70 43 68 61 6e 67 65 53 65 74 2c 20 78 53  r pChangeSet, xS
28970 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69  essionFilter xFi
28980 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f  lter, xSessionCo
28990 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74  nflict xConflict
289a0 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  , IntPtr context
289b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
289c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
289d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
289e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
289f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
28a00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
28a10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
28a20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
28a30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28a40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
28a50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
28a60 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
28a70 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
28a80 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f 73 74  angeset_apply_st
28a90 72 6d 28 49 6e 74 50 74 72 20 64 62 2c 20 78 53  rm(IntPtr db, xS
28aa0 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
28ab0 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20  ut, IntPtr pIn, 
28ac0 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78  xSessionFilter x
28ad0 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e  Filter, xSession
28ae0 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
28af0 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  ct, IntPtr conte
28b00 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
28b10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28b20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28b30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28b40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28b50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28b60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28b70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28b80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28b90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28ba0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28bb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28bc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28bd0 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74  changeset_concat
28be0 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e  _strm(xSessionIn
28bf0 70 75 74 20 78 49 6e 70 75 74 41 2c 20 49 6e 74  put xInputA, Int
28c00 50 74 72 20 70 49 6e 41 2c 20 78 53 65 73 73 69  Ptr pInA, xSessi
28c10 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 42 2c  onInput xInputB,
28c20 20 49 6e 74 50 74 72 20 70 49 6e 42 2c 20 78 53   IntPtr pInB, xS
28c30 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75  essionOutput xOu
28c40 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75  tput, IntPtr pOu
28c50 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
28c60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28c70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
28c80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28c90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
28ca0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
28cb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
28cc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
28cd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28ce0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
28cf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
28d00 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
28d10 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
28d20 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 5f  hangeset_invert_
28d30 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70  strm(xSessionInp
28d40 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74  ut xInput, IntPt
28d50 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e 4f  r pIn, xSessionO
28d60 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
28d70 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
28d80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28d90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28da0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28db0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28dc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28dd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28de0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28df0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28e00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28e10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28e20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28e30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28e40 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
28e50 74 5f 73 74 61 72 74 5f 73 74 72 6d 28 72 65 66  t_start_strm(ref
28e60 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
28e70 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
28e80 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
28e90 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  In);....#if !PLA
28ea0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28eb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28ec0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28ed0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28ee0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28ef0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28f00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28f10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28f20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28f30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28f40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28f50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28f60 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65  session_changese
28f70 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65  t_strm(IntPtr se
28f80 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f  ssion, xSessionO
28f90 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
28fa0 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
28fb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28fc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28fe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28ff0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
29000 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29010 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
29020 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29030 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
29040 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
29050 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
29060 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29070 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
29080 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28 49 6e  patchset_strm(In
29090 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78 53  tPtr session, xS
290a0 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75  essionOutput xOu
290b0 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75  tput, IntPtr pOu
290c0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
290d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
290e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
290f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29100 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
29110 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
29120 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
29130 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
29140 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29150 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
29160 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29170 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
29180 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
29190 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 5f 73  hangegroup_add_s
291a0 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61 6e 67  trm(IntPtr chang
291b0 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e  eGroup, xSession
291c0 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e  Input xInput, In
291d0 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69  tPtr pIn);....#i
291e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
291f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29210 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
29220 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
29230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
29240 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
29250 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29260 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
29270 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
29280 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
29290 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
292a0 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
292b0 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28 49 6e  p_output_strm(In
292c0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
292d0 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74  , xSessionOutput
292e0 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72   xOutput, IntPtr
292f0 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69 66 0d   pOut);..#endif.
29300 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
29310 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
29320 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29370 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
29380 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70  n sqlite interop
29390 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54   api calls (.NET
293a0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
293b0 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c  rk only)..#if PL
293c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
293d0 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
293e0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
293f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29400 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
29410 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29420 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
29430 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
29440 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  wid_interop(IntP
29450 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20  tr db, ref long 
29460 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowId);....    [
29470 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29480 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
29490 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
294a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
294b0 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65  memory_used_inte
294c0 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74  rop(ref long byt
294d0 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  es);....    [Dll
294e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
294f0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
29500 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29510 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d  void sqlite3_mem
29520 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e  ory_highwater_in
29530 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46  terop(int resetF
29540 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79  lag, ref long by
29550 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
29560 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29570 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
29580 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
29590 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
295a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
295b0 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
295c0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
295d0 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
295e0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
295f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29600 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
29610 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
29620 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
29630 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
29640 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
29650 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
29660 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76  ndex, ref long v
29670 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
29680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
29690 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
296a0 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
296b0 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d  int64_interop")]
296c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
296d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
296e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
296f0 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
29700 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
29710 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
29720 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65   ref ulong value
29730 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
29740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29750 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
29760 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
29770 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
29780 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  n_double_interop
29790 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
297a0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
297b0 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
297c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
297d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
297e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
297f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
29800 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
29810 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
29820 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
29830 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29   ref long value)
29840 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
29850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
29870 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
29880 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  d sqlite3_value_
29890 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
298a0 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75  ntPtr p, ref dou
298b0 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
298c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
298d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
298e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
298f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
29900 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f  te3_value_int64_
29910 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
29920 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75  , ref Int64 valu
29930 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
29940 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29950 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
29960 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
29970 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
29980 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  lt_double_intero
29990 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
299a0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
299b0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
299c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
299d0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
299e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
299f0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
29a00 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ult_int64_intero
29a10 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
29a20 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75  , ref Int64 valu
29a30 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
29a40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29a50 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
29a60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
29a70 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72  ntPtr sqlite3_cr
29a80 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
29a90 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d  module_interop(.
29aa0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
29ab0 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c  db, IntPtr name,
29ac0 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c   IntPtr pModule,
29ad0 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78   int iVersion, x
29ae0 43 72 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d  Create xCreate,.
29af0 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63  .        xConnec
29b00 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73  t xConnect, xBes
29b10 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
29b20 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  x, xDisconnect x
29b30 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20  Disconnect,..   
29b40 20 20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44       xDestroy xD
29b50 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f  estroy, xOpen xO
29b60 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f  pen, xClose xClo
29b70 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c  se, xFilter xFil
29b80 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e  ter,..        xN
29b90 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20  ext xNext, xEof 
29ba0 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43  xEof, xColumn xC
29bb0 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52  olumn, xRowId xR
29bc0 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20 78 55  owId, xUpdate xU
29bd0 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  pdate,..        
29be0 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78  xBegin xBegin, x
29bf0 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d  Sync xSync, xCom
29c00 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f  mit xCommit, xRo
29c10 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b  llback xRollback
29c20 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64  ,..        xFind
29c30 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75  Function xFindFu
29c40 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20  nction, xRename 
29c50 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f  xRename, xSavepo
29c60 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d  int xSavepoint,.
29c70 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73  .        xReleas
29c80 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c  e xRelease, xRol
29c90 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63  lbackTo xRollbac
29ca0 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  kTo, IntPtr pCli
29cb0 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20  entData,..      
29cc0 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65    xDestroyModule
29cd0 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29   xDestroyModule)
29ce0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ;..#endif..    /
29cf0 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  / PLATFORM_COMPA
29d00 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21  CTFRAMEWORK && !
29d10 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
29d20 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
29d30 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d80 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
29d90 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74  n Native Delegat
29da0 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  es..#if INTEROP_
29db0 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23  VIRTUAL_TABLE..#
29dc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
29dd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
29de0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
29df0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
29e00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
29e10 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
29e20 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
29e30 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
29e40 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20  ode xCreate(..  
29e50 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
29e60 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
29e70 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
29e80 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
29e90 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
29ea0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
29eb0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
29ec0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
29ed0 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
29ee0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f30 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
29f40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29f50 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
29f60 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
29f70 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
29f80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
29f90 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
29fa0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
29fb0 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65  ErrorCode xConne
29fc0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
29fd0 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
29fe0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
29ff0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2a000 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2a010 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
2a020 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
2a030 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
2a040 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
2a050 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a0b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a0c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a0d0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2a0e0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2a0f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a100 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2a110 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2a120 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a130 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20   xBestIndex(..  
2a140 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2a150 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ab,..        Int
2a160 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
2a170 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2a1d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a1e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2a1f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2a200 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2a210 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a220 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2a230 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2a240 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
2a250 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
2a260 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2a270 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2a2d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a2e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a2f0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2a300 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2a310 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2a320 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2a330 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2a340 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2a350 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20  ode xDestroy(.. 
2a360 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2a370 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
2a380 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a3d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2a3e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2a3f0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2a400 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2a410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2a430 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2a440 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2a450 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20  orCode xOpen(.. 
2a460 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2a470 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
2a480 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72  f IntPtr pCursor
2a490 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2a4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2a4f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a500 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a510 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2a520 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2a530 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2a540 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2a550 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2a560 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2a570 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20  ode xClose(..   
2a580 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
2a590 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
2a5a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a5f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2a600 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2a610 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2a620 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2a630 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a640 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2a650 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2a660 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2a670 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
2a680 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2a690 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
2a6a0 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
2a6b0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64         IntPtr id
2a6c0 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69  xStr,..        i
2a6d0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
2a6e0 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
2a6f0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a740 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a750 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a760 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a770 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2a780 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2a790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a7a0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2a7b0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2a7c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a7d0 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20   xNext(..       
2a7e0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2a7f0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2a850 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2a860 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2a870 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2a880 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2a890 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a8a0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2a8b0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2a8c0 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20  te int xEof(..  
2a8d0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
2a8e0 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
2a8f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a940 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2a950 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2a960 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2a970 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2a980 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2a990 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2a9a0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2a9b0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2a9c0 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28  rorCode xColumn(
2a9d0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2a9e0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
2a9f0 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65     IntPtr pConte
2aa00 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  xt,..        int
2aa10 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a   index..    );..
2aa20 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa70 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2aa80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2aa90 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2aaa0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2aab0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2aac0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2aad0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2aae0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2aaf0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64  ErrorCode xRowId
2ab00 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2ab10 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
2ab20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
2ab30 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
2ab40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ab90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2aba0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2abb0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2abc0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2abd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2abe0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2abf0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2ac00 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2ac10 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a  rCode xUpdate(..
2ac20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ac30 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
2ac40 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
2ac50 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
2ac60 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
2ac70 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
2ac80 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acd0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2ace0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2acf0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2ad00 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2ad10 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2ad20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2ad30 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2ad40 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2ad50 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
2ad60 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2ad70 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
2ad80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2add0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2ade0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2adf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2ae00 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2ae10 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2ae20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2ae30 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2ae40 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2ae50 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63  eErrorCode xSync
2ae60 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2ae70 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
2ae80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aed0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2aee0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2aef0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2af00 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2af10 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2af20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2af30 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2af40 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2af50 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d  eErrorCode xComm
2af60 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  it(..        Int
2af70 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2af80 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2afe0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2aff0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2b000 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2b010 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2b020 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2b030 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2b040 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2b050 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
2b060 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
2b070 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
2b080 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2b0e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2b0f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2b100 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2b110 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2b120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2b130 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2b140 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2b150 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69   int xFindFuncti
2b160 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
2b170 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2b180 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20      int nArg,.. 
2b190 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
2b1a0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ame,..        re
2b1b0 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  f SQLiteCallback
2b1c0 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20   callback,..    
2b1d0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
2b1e0 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b  UserData..    );
2b1f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b240 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2b250 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b260 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2b270 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2b280 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2b290 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2b2a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2b2b0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2b2c0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e  teErrorCode xRen
2b2d0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ame(..        In
2b2e0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2b2f0 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77       IntPtr zNew
2b300 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2b360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2b370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2b380 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2b390 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2b3a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2b3b0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2b3c0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2b3d0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2b3e0 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d  ode xSavepoint(.
2b3f0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b400 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2b410 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
2b420 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
2b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2b480 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2b490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b4a0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
2b4b0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
2b4c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
2b4d0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
2b4e0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
2b4f0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2b500 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  e xRelease(..   
2b510 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2b520 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
2b530 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
2b540 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b590 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2b5a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2b5b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2b5c0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2b5d0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2b5e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2b5f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2b600 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2b610 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2b620 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2b630 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2b640 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
2b650 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
2b660 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6b0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2b6c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b6d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2b6e0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2b6f0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2b700 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2b710 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2b720 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69  lic delegate voi
2b730 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  d xDestroyModule
2b740 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44  (IntPtr pClientD
2b750 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ata);..#endif.. 
2b760 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2b770 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7c0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
2b7d0 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65  Native Structure
2b7e0 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
2b7f0 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20  IRTUAL_TABLE..  
2b800 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
2b810 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
2b820 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
2b830 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
2b840 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
2b850 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20   {..        /*  
2b860 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   0 */ public int
2b870 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20   iVersion;..    
2b880 20 20 20 20 2f 2a 20 20 20 38 20 2a 2f 20 70 75      /*   8 */ pu
2b890 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72  blic xCreate xCr
2b8a0 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  eate;..        /
2b8b0 2a 20 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20  *  16 */ public 
2b8c0 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
2b8d0 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  t;..        /*  
2b8e0 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65  24 */ public xBe
2b8f0 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64  stIndex xBestInd
2b900 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  ex;..        /* 
2b910 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 44   32 */ public xD
2b920 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f  isconnect xDisco
2b930 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20  nnect;..        
2b940 2f 2a 20 20 34 30 20 2a 2f 20 70 75 62 6c 69 63  /*  40 */ public
2b950 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
2b960 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  oy;..        /* 
2b970 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 4f   48 */ public xO
2b980 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20  pen xOpen;..    
2b990 20 20 20 20 2f 2a 20 20 35 36 20 2a 2f 20 70 75      /*  56 */ pu
2b9a0 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f  blic xClose xClo
2b9b0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  se;..        /* 
2b9c0 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46   64 */ public xF
2b9d0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a  ilter xFilter;..
2b9e0 20 20 20 20 20 20 20 20 2f 2a 20 20 37 32 20 2a          /*  72 *
2b9f0 2f 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78  / public xNext x
2ba00 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f  Next;..        /
2ba10 2a 20 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20  *  80 */ public 
2ba20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20  xEof xEof;..    
2ba30 20 20 20 20 2f 2a 20 20 38 38 20 2a 2f 20 70 75      /*  88 */ pu
2ba40 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  blic xColumn xCo
2ba50 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lumn;..        /
2ba60 2a 20 20 39 36 20 2a 2f 20 70 75 62 6c 69 63 20  *  96 */ public 
2ba70 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a  xRowId xRowId;..
2ba80 20 20 20 20 20 20 20 20 2f 2a 20 31 30 34 20 2a          /* 104 *
2ba90 2f 20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65  / public xUpdate
2baa0 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20   xUpdate;..     
2bab0 20 20 20 2f 2a 20 31 31 32 20 2a 2f 20 70 75 62     /* 112 */ pub
2bac0 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67 69  lic xBegin xBegi
2bad0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  n;..        /* 1
2bae0 32 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 53 79  20 */ public xSy
2baf0 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20  nc xSync;..     
2bb00 20 20 20 2f 2a 20 31 32 38 20 2a 2f 20 70 75 62     /* 128 */ pub
2bb10 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  lic xCommit xCom
2bb20 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  mit;..        /*
2bb30 20 31 33 36 20 2a 2f 20 70 75 62 6c 69 63 20 78   136 */ public x
2bb40 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
2bb50 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  ck;..        /* 
2bb60 31 34 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46  144 */ public xF
2bb70 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
2bb80 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20  dFunction;..    
2bb90 20 20 20 20 2f 2a 20 31 35 32 20 2a 2f 20 70 75      /* 152 */ pu
2bba0 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65  blic xRename xRe
2bbb0 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  name;..        /
2bbc0 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62  * The methods ab
2bbd0 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69  ove are in versi
2bbe0 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69  on 1 of the sqli
2bbf0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
2bc00 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20       * object.  
2bc10 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20  Those below are 
2bc20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e  for version 2 an
2bc30 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20  d greater. */.. 
2bc40 20 20 20 20 20 20 20 2f 2a 20 31 36 30 20 2a 2f         /* 160 */
2bc50 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69   public xSavepoi
2bc60 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a  nt xSavepoint;..
2bc70 20 20 20 20 20 20 20 20 2f 2a 20 31 36 38 20 2a          /* 168 *
2bc80 2f 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73  / public xReleas
2bc90 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20  e xRelease;..   
2bca0 20 20 20 20 20 2f 2a 20 31 37 36 20 2a 2f 20 70       /* 176 */ p
2bcb0 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54  ublic xRollbackT
2bcc0 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a  o xRollbackTo;..
2bcd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2bd30 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
2bd40 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
2bd50 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
2bd60 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
2bd70 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a  e3_vtab..    {..
2bd80 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f          /*  0 */
2bd90 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
2bda0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
2bdb0 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69 63   /*  8 */ public
2bdc0 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f   int nRef; /* NO
2bdd0 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d   LONGER USED */.
2bde0 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 20 2a  .        /* 16 *
2bdf0 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
2be00 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d  zErrMsg;..    }.
2be10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
2be70 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
2be80 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
2be90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2bea0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
2beb0 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d  b_cursor..    {.
2bec0 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f  .        /* 0 */
2bed0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
2bee0 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  VTab;..    }....
2bef0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2bf40 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
2bf50 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
2bf60 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
2bf70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
2bf80 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
2bf90 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
2bfa0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
2bfb0 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
2bfc0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
2bfd0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
2bfe0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63  ndexConstraint c
2bff0 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20  onstraint..     
2c000 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2c010 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
2c020 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c030 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
2c040 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  raint != null)..
2c050 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2c070 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61  Column = constra
2c080 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  int.iColumn;..  
2c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
2c0a0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70   = constraint.op
2c0b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2c0c0 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73     usable = cons
2c0d0 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a  traint.usable;..
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0f0 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f  iTermOffset = co
2c100 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66  nstraint.iTermOf
2c110 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  fset;..         
2c120 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2c130 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a  //....        /*
2c190 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   0 */ public int
2c1a0 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
2c1b0 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69     /* 4 */ publi
2c1c0 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  c SQLiteIndexCon
2c1d0 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20  straintOp op;.. 
2c1e0 20 20 20 20 20 20 20 2f 2a 20 35 20 2a 2f 20 70         /* 5 */ p
2c1f0 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c  ublic byte usabl
2c200 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38  e;..        /* 8
2c210 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
2c220 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
2c230 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
2c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c280 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
2c290 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
2c2a0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
2c2b0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
2c2c0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
2c2d0 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20  index_orderby.. 
2c2e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
2c2f0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
2c300 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20  ex_orderby(..   
2c310 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
2c320 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65  ndexOrderBy orde
2c330 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
2c340 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2c350 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
2c360 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c370 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20   if (orderBy != 
2c380 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2c390 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c3a0 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20        iColumn = 
2c3b0 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b  orderBy.iColumn;
2c3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c3d0 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79    desc = orderBy
2c3e0 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20  .desc;..        
2c3f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2c400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c450 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
2c460 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e  * 0 */ public in
2c470 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f  t iColumn; /* Co
2c480 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a  lumn number */..
2c490 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20          /* 4 */ 
2c4a0 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63  public byte desc
2c4b0 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20  ;   /* True for 
2c4c0 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
2c4d0 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d   ASC. */..    }.
2c4e0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c530 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
2c540 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
2c550 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
2c560 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2c570 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
2c580 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
2c590 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  age..    {..    
2c5a0 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
2c5b0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
2c5c0 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20  int_usage(..    
2c5d0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
2c5e0 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
2c5f0 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  ge constraintUsa
2c600 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ge..            
2c610 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2c620 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2c630 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c640 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73  if (constraintUs
2c650 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  age != null)..  
2c660 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c670 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
2c680 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61  vIndex = constra
2c690 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64  intUsage.argvInd
2c6a0 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex;..           
2c6b0 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73       omit = cons
2c6c0 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74  traintUsage.omit
2c6d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2c6e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2c6f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c740 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2c750 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20   int argvIndex; 
2c760 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72  /* if >0, constr
2c770 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
2c780 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20  argv to xFilter 
2c790 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
2c7a0 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20  ic byte omit;   
2c7b0 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65    /* Do not code
2c7c0 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
2c7d0 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a   constraint */..
2c7e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c830 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c840 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
2c850 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
2c860 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
2c870 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
2c880 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
2c890 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
2c8a0 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20   Inputs */..    
2c8b0 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62      /*  0 */ pub
2c8c0 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61  lic int nConstra
2c8d0 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  int; /* Number o
2c8e0 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f  f entries in aCo
2c8f0 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
2c900 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75       /*  8 */ pu
2c910 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
2c920 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20  straint;..      
2c930 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69    /* 16 */ publi
2c940 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20  c int nOrderBy; 
2c950 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
2c960 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65  entries in aOrde
2c970 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  rBy */..        
2c980 2f 2a 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20  /* 24 */ public 
2c990 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b  IntPtr aOrderBy;
2c9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74  ..        /* Out
2c9b0 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  puts */..       
2c9c0 20 2f 2a 20 33 32 20 2a 2f 20 70 75 62 6c 69 63   /* 32 */ public
2c9d0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
2c9e0 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20  intUsage;..     
2c9f0 20 20 20 2f 2a 20 34 30 20 2a 2f 20 70 75 62 6c     /* 40 */ publ
2ca00 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20  ic int idxNum;  
2ca10 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
2ca20 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
2ca30 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
2ca40 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 38 20  ..        /* 48 
2ca50 2a 2f 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67  */ public string
2ca60 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20 20   idxStr;        
2ca70 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
2ca80 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
2ca90 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  m sqlite3_malloc
2caa0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2cab0 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74  56 */ public int
2cac0 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74   needToFreeIdxSt
2cad0 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74  r; /* Free idxSt
2cae0 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  r using sqlite3_
2caf0 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a  free() if true *
2cb00 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 30  /..        /* 60
2cb10 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6f   */ public int o
2cb20 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
2cb30 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
2cb40 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
2cb50 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
2cb60 20 20 2f 2a 20 36 34 20 2a 2f 20 70 75 62 6c 69    /* 64 */ publi
2cb70 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74  c double estimat
2cb80 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d  edCost; /* Estim
2cb90 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
2cba0 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f  ng this index */
2cbb0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 37 32 20  ..        /* 72 
2cbc0 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65  */ public long e
2cbd0 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20  stimatedRows;   
2cbe0 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d  /* Estimated num
2cbf0 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75  ber of rows retu
2cc00 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  rned */..       
2cc10 20 2f 2a 20 38 30 20 2a 2f 20 70 75 62 6c 69 63   /* 80 */ public
2cc20 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67   SQLiteIndexFlag
2cc30 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d  s idxFlags; /* M
2cc40 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e  ask of SQLITE_IN
2cc50 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73  DEX_SCAN_* flags
2cc60 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2cc70 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e  88 */ public lon
2cc80 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20  g colUsed;      
2cc90 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73     /* Input: Mas
2cca0 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65  k of columns use
2ccb0 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a  d by statement *
2ccc0 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  /..    }..#endif
2ccd0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2cce0 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
2ccf0 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
2cd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
2cd50 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  ion .NET Compact
2cd60 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79   Framework (only
2cd70 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
2cd80 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54   Class..#if PLAT
2cd90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2cda0 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
2cdb0 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
2cdc0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
2cdd0 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
2cde0 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
2cdf0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
2ce00 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
2ce10 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
2ce20 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
2ce30 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
2ce40 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
2ce50 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
2ce60 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
2ce70 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
2ce80 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
2ce90 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
2cea0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
2ceb0 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
2cec0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
2ced0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
2cee0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
2cef0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
2cf00 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
2cf10 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
2cf20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cf30 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
2cf40 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2cf50 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
2cf60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2cf70 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
2cf80 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
2cf90 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
2cfa0 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
2cfb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
2cfc0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
2cfd0 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
2cfe0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
2cff0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
2d000 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
2d010 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
2d020 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
2d030 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
2d040 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
2d050 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
2d060 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
2d070 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
2d080 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
2d090 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
2d0a0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
2d0b0 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
2d0c0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
2d0d0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
2d0e0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
2d0f0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
2d100 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
2d110 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
2d120 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
2d130 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
2d140 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
2d150 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
2d160 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2d170 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
2d180 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
2d190 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
2d1a0 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
2d1b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
2d1c0 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
2d1d0 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
2d1e0 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
2d1f0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
2d200 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
2d210 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
2d220 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
2d230 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2d240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d290 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2d2a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2d2b0 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
2d2c0 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d   Handles the unm
2d2d0 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20  anaged database 
2d2e0 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f  pointer, and pro
2d2f0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
2d300 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f  on..    // suppo
2d310 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20  rt for it...    
2d320 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
2d330 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e  class SQLiteConn
2d340 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43  ectionHandle : C
2d350 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
2d360 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45     {..#if SQLITE
2d370 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c  _STANDARD && !PL
2d380 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2d390 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2d3a0 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
2d3b0 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e  te void CloseCon
2d3c0 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28  nectionCallback(
2d3d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
2d3e0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2d3f0 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72  ndle hdl, IntPtr
2d400 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   db);....       
2d410 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2d420 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
2d430 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f  Callback closeCo
2d440 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20  nnection =..    
2d450 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
2d460 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
2d470 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
2d480 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d4d0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2d4e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2d4f0 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
2d500 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
2d510 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
2d520 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
2d530 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
2d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d580 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d590 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77   private bool ow
2d5a0 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20  nHandle;....    
2d5b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
2d610 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
2d620 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
2d630 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2d640 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20  ndle db)..      
2d650 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d660 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29   if (db != null)
2d670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d680 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2d690 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6b0 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f  lock (db.syncRoo
2d6c0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2d6d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e     return db.han
2d700 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
2d710 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d720 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d730 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
2d740 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
2d750 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d7b0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
2d7c0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2d7d0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c  (IntPtr db, bool
2d7e0 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20   ownHandle)..   
2d7f0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
2d800 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
2d810 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2d820 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2d830 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2d840 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2d850 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2d860 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d870 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
2d880 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61  wnHandle = ownHa
2d890 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
2d8a0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2d8b0 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  (db);..         
2d8c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2d8d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2d930 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
2d940 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f  ectionHandle(boo
2d950 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
2d960 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
2d970 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
2d980 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
2d990 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2d9a0 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48          if (ownH
2d9b0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
2d9c0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2d9d0 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
2d9e0 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e  f DebugData.conn
2d9f0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
2da00 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
2da10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2da70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
2da80 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
2da90 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
2daa0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2dab0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2dac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2dad0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2dae0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2daf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2db00 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61        if (!ownHa
2db10 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75  ndle) return tru
2db20 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2db30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2db40 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2db50 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
2db60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2db70 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2db80 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
2db90 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
2dba0 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
2dbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dbc0 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
2dbd0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2dbe0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
2dbf0 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
2dc00 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
2dc10 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
2dc20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2dc30 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
2dc40 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
2dc50 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
2dc60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2dc70 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
2dc80 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
2dc90 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2dca0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2dcb0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
2dcc0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
2dcd0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e  calHandle);..#en
2dce0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  dif....#if !NET_
2dcf0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2dd00 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2dd10 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2dd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dd30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2dd40 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2dd50 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2dd60 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2dd70 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2dd80 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2dd90 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2dda0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddc0 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
2ddd0 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  on: {0}", localH
2dde0 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
2ddf0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2de00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2de10 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2de40 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
2de50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2de60 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2de70 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
2de80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2de90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2dea0 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
2deb0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dee0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
2def0 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
2df00 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29  on(this, handle)
2df10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2df20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2df30 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
2df40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2df50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2df60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2df70 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
2df80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2df90 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2dfa0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
2dfb0 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e  f DebugData.conn
2dfc0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
2dfd0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
2dfe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dff0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2e000 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e010 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
2e020 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2e030 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2e040 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2e050 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
2e060 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
2e070 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2e080 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
2e090 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2e0a0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
2e0b0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2e0c0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2e0d0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e100 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2e110 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2e120 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2e130 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2e140 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2e150 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2e160 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f   "CloseConnectio
2e190 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  n: {0}, exceptio
2e1a0 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1c0 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
2e1d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2e1e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2e200 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2e210 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e220 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2e230 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2e240 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
2e250 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
2e260 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2e270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2e280 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2e290 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2e2a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2e2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e2d0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
2e2e0 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
2e2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2e300 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2e310 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2e320 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2e330 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
2e340 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2e350 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
2e360 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2e370 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2e3c0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2e3d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2e3e0 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
2e3f0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2e400 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e410 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
2e420 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2e430 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e  gData.connection
2e440 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
2e450 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
2e460 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e4b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2e4c0 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a  bool OwnHandle..
2e4d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e4e0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2e4f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2e500 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2e510 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2e520 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2e530 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2e540 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2e550 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e560 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e570 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20   ownHandle;..   
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2e590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2e5a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e5b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2e600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
2e610 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
2e620 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
2e630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
2e640 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
2e650 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2e660 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2e670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e680 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2e690 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2e6a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6c0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
2e6d0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
2e6e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e6f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2e700 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2e710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e760 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
2e770 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
2e780 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
2e790 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
2e7a0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2e7b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2e7c0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2e7d0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2e7e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2e7f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e800 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
2e810 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
2e820 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2e830 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2e840 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
2e850 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2e860 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e8b0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
2e8c0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
2e8d0 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
2e8e0 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   Provides finali
2e8f0 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66  zation support f
2e900 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c  or unmanaged SQL
2e910 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d  ite statements..
2e920 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
2e930 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
2e940 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2e950 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
2e960 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
2e970 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2e980 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2e990 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
2e9a0 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
2e9b0 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
2e9c0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
2e9d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ea20 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2ea30 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2ea40 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
2ea50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2eaa0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2eab0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
2eac0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
2ead0 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  r(SQLiteStatemen
2eae0 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20  tHandle stmt).. 
2eaf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2eb00 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21        if (stmt !
2eb10 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2eb20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2eb30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2eb40 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2eb50 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d         lock (stm
2eb60 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  t.syncRoot)..#en
2eb70 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2eb80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2eba0 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d  rn stmt.handle;.
2ebb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ebc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ebd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
2ebe0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
2ebf0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
2ec00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
2ec60 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65  rnal SQLiteState
2ec70 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74  mentHandle(SQLit
2ec80 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2ec90 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74  e cnn, IntPtr st
2eca0 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mt)..           
2ecb0 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
2ecc0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2ecd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2ece0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2ecf0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2ed00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2ed10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ed20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e           this.cn
2ed30 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20  n = cnn;..      
2ed40 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
2ed50 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20  dle(stmt);..    
2ed60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ed70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2edd0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
2ede0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2edf0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2ee00 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
2ee10 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
2ee20 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2ee30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2ee40 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
2ee50 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2ee60 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
2ee70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
2ee80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2ee90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eed0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2eee0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
2eef0 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
2ef00 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
2ef10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ef20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2ef30 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
2ef40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2ef50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2ef60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
2ef70 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
2ef80 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
2ef90 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2efa0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
2efb0 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
2efc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2efd0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2efe0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2eff0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2f000 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2f010 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61  Base.FinalizeSta
2f020 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61  tement(cnn, loca
2f030 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
2f040 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2f050 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2f060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f070 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2f080 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2f0a0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
2f0b0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
2f0c0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
2f0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0e0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2f0f0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2f100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f110 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
2f120 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22  eStatement: {0}"
2f130 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
2f140 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2f160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f170 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2f180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f190 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2f1a0 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
2f1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2f1c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f1f0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
2f200 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2f210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f220 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f240 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
2f250 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
2f260 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
2f270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f280 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
2f290 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2f2c0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2f2d0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2f2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2f0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
2f300 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2f310 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f  Data.statementCo
2f320 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
2f330 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2f340 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f350 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
2f360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2f370 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2f380 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2f390 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2f3a0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
2f3b0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
2f3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
2f3d0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
2f3e0 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
2f3f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2f400 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2f410 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2f420 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2f430 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2f440 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2f460 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
2f470 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
2f480 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
2f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4a0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
2f4b0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
2f4c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4d0 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
2f4e0 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
2f4f0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
2f500 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2f510 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
2f520 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
2f530 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2f540 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f550 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2f560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f580 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2f590 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f5a0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2f5c0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2f5d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2f5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5f0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2f600 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2f610 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f630 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
2f640 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
2f650 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2f660 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
2f670 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2f680 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
2f690 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2f6a0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2f6b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2f6c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f710 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
2f720 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2f730 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
2f740 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
2f750 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f760 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
2f770 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2f780 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2f790 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
2f7a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2f7b0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f800 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2f810 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2f820 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
2f830 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2f840 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2f850 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2f860 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f870 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f880 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2f890 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2f8a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2f8b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f8c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f8d0 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
2f8e0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f900 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2f910 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2f920 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2f970 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2f980 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2f990 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
2f9a0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
2f9b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2f9c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2f9d0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2f9e0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2f9f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2fa00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2fa10 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
2fa20 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
2fa30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2fa40 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2fa50 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
2fa60 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
2fa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2fac0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61  #region SQLiteBa
2fad0 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73  ckupHandle Class
2fae0 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65  ..    // Provide
2faf0 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73  s finalization s
2fb00 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e  upport for unman
2fb10 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b  aged SQLite back
2fb20 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20  up objects...   
2fb30 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
2fb40 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63   class SQLiteBac
2fb50 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  kupHandle : Crit
2fb60 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
2fb70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2fb80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2fb90 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2fba0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
2fbb0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
2fbc0 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
2fbd0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2fbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2fc30 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2fc40 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2fc50 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
2fc60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fca0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2fcb0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2fcc0 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
2fcd0 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
2fce0 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61  eBackupHandle ba
2fcf0 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b  ckup)..        {
2fd00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2fd10 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c   (backup != null
2fd20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2fd30 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2fd40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2fd50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd60 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79   lock (backup.sy
2fd70 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2fd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fda0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62          return b
2fdb0 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20  ackup.handle;.. 
2fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2fdd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2fde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2fdf0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2fe00 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2fe10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2fe20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2fe60 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2fe70 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  al SQLiteBackupH
2fe80 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
2fe90 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
2fea0 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  , IntPtr backup)
2feb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2fec0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2fed0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2fee0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2fef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2ff00 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2ff10 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2ff20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ff30 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
2ff40 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
2ff50 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2ff60 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20  (backup);..     
2ff70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ff80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2ffe0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2fff0 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a  BackupHandle()..
30000 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
30010 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
30020 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
30030 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
30040 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
30050 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
30060 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
30070 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  ckupCount);..#en
30080 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
30090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
300a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
300f0 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
30100 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
30110 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
30120 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
30130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30140 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
30150 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30170 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
30180 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
30190 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
301a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301b0 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
301c0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
301d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
301e0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
301f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
30200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30210 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
30220 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
30230 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
30240 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
30250 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
30260 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
30270 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30280 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302a0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
302b0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
302c0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
302d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302e0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
302f0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
30300 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
30310 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
30320 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c  ishBackup: {0}",
30330 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
30340 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
30350 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
30360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30370 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
30380 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30390 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
303a0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
303b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
303c0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
303d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
303e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303f0 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
30400 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
30410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30420 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
30440 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
30450 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64  Backup(cnn, hand
30460 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
30470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
30480 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
30490 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
304a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
304b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
304c0 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
304d0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
304e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
304f0 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
30500 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
30510 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
30520 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
30530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30540 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
30550 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
30560 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
30570 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
30580 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
30590 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
305a0 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
305b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
305c0 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
305d0 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
305e0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
305f0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
30600 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
30610 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
30620 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
30630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30650 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
30660 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
30670 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
30680 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30690 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
306a0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
306b0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
306c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306d0 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
306e0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
306f0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
30710 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
30720 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
30730 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30740 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
30750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30760 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30770 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
30780 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30790 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
307a0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
307b0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
307c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
307d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
307e0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
307f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
30800 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30820 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
30830 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
30840 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30850 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
30860 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
30870 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
30880 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
30890 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
308a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
308b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
308c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30900 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
30910 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
30920 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
30930 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
30940 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30950 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
30960 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
30970 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
30980 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  a.backupCount);.
30990 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
309a0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
309b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
30a00 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
30a10 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
30a20 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
30a30 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
30a40 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
30a50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30a60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30a70 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
30a80 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
30a90 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
30aa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30ab0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30ac0 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
30ad0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30af0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30b00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30b10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
30b60 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
30b70 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
30b80 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
30b90 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
30ba0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
30bb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
30bc0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
30bd0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
30be0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
30bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c00 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
30c10 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
30c20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30c30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
30c40 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
30c50 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
30cb0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f  region SQLiteBlo
30cc0 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  bHandle Class.. 
30cd0 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
30ce0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
30cf0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
30d00 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62  d SQLite blob ob
30d10 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  jects...    inte
30d20 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
30d30 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  s SQLiteBlobHand
30d40 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
30d50 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
30d60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30d70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30d80 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
30d90 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
30da0 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
30db0 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
30dc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30e10 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
30e20 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
30e30 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
30e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
30e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
30ea0 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
30eb0 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
30ec0 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61  Ptr(SQLiteBlobHa
30ed0 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20  ndle blob)..    
30ee0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30ef0 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e     if (blob != n
30f00 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
30f10 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30f20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30f30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
30f40 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73      lock (blob.s
30f50 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
30f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30f70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30f80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
30f90 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  blob.handle;..  
30fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
30fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
30fc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30fd0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
30fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30ff0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31040 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
31050 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  l SQLiteBlobHand
31060 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  le(SQLiteConnect
31070 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49  ionHandle cnn, I
31080 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20  ntPtr blob)..   
31090 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
310a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
310b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
310c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
310d0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
310e0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
310f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31110 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b   this.cnn = cnn;
31120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31130 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62    SetHandle(blob
31140 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31150 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
31160 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
31170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
311b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
311c0 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  te SQLiteBlobHan
311d0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  dle()..         
311e0 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
311f0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
31200 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
31210 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
31220 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
31230 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
31240 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
31250 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
31260 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
31270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
312c0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
312d0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
312e0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
312f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31300 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
31310 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
31320 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
31330 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
31340 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
31350 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
31360 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
31370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31380 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
31390 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
313a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
313b0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
313c0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
313d0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
313e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
313f0 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e  se.CloseBlob(cnn
31400 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
31410 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
31420 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
31430 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
31440 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
31450 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31470 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
31480 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
31490 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
314a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
314b0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
314c0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
314d0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
314e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
314f0 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20  loseBlob: {0}", 
31500 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
31510 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
31520 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31540 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
31550 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31560 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
31570 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
31580 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
31590 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
315a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
315b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315c0 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
315d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
315e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
31610 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c  LiteBase.CloseBl
31620 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  ob(cnn, handle);
31630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31640 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
31650 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
31660 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
31670 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
31690 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
316a0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
316b0 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
316c0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
316d0 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43   DebugData.blobC
316e0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
316f0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
31700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31710 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
31720 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31730 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
31740 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
31750 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
31760 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
31770 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
31780 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
31790 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
317a0 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
317b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
317c0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
317d0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
317e0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
317f0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
31800 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31820 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
31830 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
31840 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31860 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
31870 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
31880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31890 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
318a0 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70  Blob: {0}, excep
318b0 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
318c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318d0 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
318e0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
318f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31910 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
31920 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31930 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
31940 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
31950 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31960 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
31970 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
31980 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
31990 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
319a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
319b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
319c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
319d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
319e0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
319f0 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
31a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a10 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
31a20 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
31a30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31a40 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
31a50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31a60 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
31a70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
31a80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31ad0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
31ae0 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
31af0 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
31b00 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
31b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
31b20 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
31b30 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
31b40 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
31b50 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
31b60 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
31b70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31bc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
31bd0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
31be0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
31bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
31c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31c10 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
31c20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
31c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c40 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
31c50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31c60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c80 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
31c90 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
31ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31cb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31cc0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
31cd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
31d20 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
31d30 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
31d40 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
31d50 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
31d60 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
31d70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31d80 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
31d90 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
31da0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
31db0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31dc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
31dd0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
31de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31df0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
31e00 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
31e10 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..