System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1695f8c2586d22655adce159a72e1e96c746bbbd:


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 29 20 26 26  7 || NET_471) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0360: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0370: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0380: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0390: 4b 20 7c 7c 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  K || COUNT_HANDL
03a0: 45 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  E..  using Syste
03b0: 6d 2e 54 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65  m.Threading;..#e
03c0: 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20  ndif....  using 
03d0: 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20  System.Xml;.... 
03e0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 44   #region Debug D
03f0: 61 74 61 20 53 74 61 74 69 63 20 43 6c 61 73 73  ata Static Class
0400: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
0410: 4c 45 20 7c 7c 20 44 45 42 55 47 0d 0a 20 20 2f  LE || DEBUG..  /
0420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0430: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 65  /// This class e
0440: 6e 63 61 70 73 75 6c 61 74 65 73 20 73 6f 6d 65  ncapsulates some
0450: 20 74 72 61 63 6b 69 6e 67 20 64 61 74 61 20 74   tracking data t
0460: 68 61 74 20 69 73 20 75 73 65 64 20 66 6f 72 20  hat is used for 
0470: 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 2f 2f 2f  debugging..  ///
0480: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0490: 70 6f 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  poses...  /// </
04a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
04b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
04c0: 73 20 44 65 62 75 67 44 61 74 61 0d 0a 20 20 7b  s DebugData..  {
04d0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
04e0: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69  Private Data..#i
04f0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0500: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0510: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
0520: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
0530: 74 65 63 74 20 73 65 76 65 72 61 6c 20 73 74 61  tect several sta
0540: 74 69 63 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20  tic fields...   
0550: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0560: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0570: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0580: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
0590: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
05a0: 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
05b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
05c0: 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0610: 6f 6e 20 43 72 69 74 69 63 61 6c 20 48 61 6e 64  on Critical Hand
0620: 6c 65 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  le Counts (Debug
0630: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0640: 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
0650: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0660: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 63  // NOTE: These c
0670: 6f 75 6e 74 73 20 72 65 70 72 65 73 65 6e 74 20  ounts represent 
0680: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
0690: 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 0d   of outstanding.
06a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
06b0: 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64 29 20 43  (non-disposed) C
06c0: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 64 65  riticalHandle de
06d0: 72 69 76 65 64 20 6f 62 6a 65 63 74 20 69 6e 73  rived object ins
06e0: 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 2f 2f  tances..      //
06f0: 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20 62         created b
0700: 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 61  y this library a
0710: 6e 64 20 61 72 65 20 70 72 69 6d 61 72 69 6c 79  nd are primarily
0720: 20 66 6f 72 20 75 73 65 20 62 79 0d 0a 20 20 20   for use by..   
0730: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
0740: 74 65 73 74 20 73 75 69 74 65 2e 20 20 54 68 65  test suite.  The
0750: 73 65 20 63 6f 75 6e 74 73 20 61 72 65 20 69 6e  se counts are in
0760: 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65  cremented by the
0770: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0780: 20 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6e 73   associated cons
0790: 74 72 75 63 74 6f 72 73 20 61 6e 64 20 61 72 65  tructors and are
07a0: 20 64 65 63 72 65 6d 65 6e 74 65 64 20 75 70 6f   decremented upo
07b0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
07c0: 20 20 20 20 20 20 73 75 63 63 65 73 73 66 75 6c        successful
07d0: 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74   completion of t
07e0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 52 65  he associated Re
07f0: 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a 20 20 20  leaseHandle..   
0800: 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 74 68     //       meth
0810: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ods...      //..
0820: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0830: 74 61 74 69 63 20 69 6e 74 20 63 6f 6e 6e 65 63  tatic int connec
0840: 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  tionCount;..    
0850: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0860: 63 20 69 6e 74 20 73 74 61 74 65 6d 65 6e 74 43  c int statementC
0870: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0880: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0890: 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a 20   backupCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 6c 6f 62 43 6f 75  atic int blobCou
08c0: 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  nt;..#endif..   
08d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
08e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
08f0: 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0940: 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64 20  n Settings Read 
0950: 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42 75  Counts (Debug Bu
0960: 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44  ild Only)..#if D
0970: 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  EBUG..      /// 
0980: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0990: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
09a0: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
09b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
09c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
09d0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
09e0: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20   /// settings.  
09f0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0a00: 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65   is only recorde
0a10: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0a20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
0a30: 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  / "Debug" build 
0a40: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0a70: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0a80: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0a90: 74 3e 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f  t> settingReadCo
0aa0: 75 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  unts;....      /
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
0b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0b20: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0b30: 73 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  s the read count
0b40: 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d  s for the runtim
0b50: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
0b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
0b70: 6e 67 73 20 76 69 61 20 74 68 65 20 58 4d 4c 20  ngs via the XML 
0b80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
0b90: 6c 65 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  le.  This inform
0ba0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0d 0a 20  ation is only.. 
0bb0: 20 20 20 20 20 2f 2f 2f 20 72 65 63 6f 72 64 65       /// recorde
0bc0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0bd0: 69 6e 20 74 68 65 20 22 44 65 62 75 67 22 20 62  in the "Debug" b
0be0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0bf0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0c10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0c20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0c30: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 46  g, int> settingF
0c40: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a  ileReadCounts;..
0c50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
0c60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
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 0d 0a 0d 0a 20  ///////////.... 
0cc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 74 68       #region Oth
0cd0: 65 72 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  er Counts (Debug
0ce0: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0cf0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0d00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0d10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
0d20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 6d  tionary stores m
0d30: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 63 6f 75  iscellaneous cou
0d40: 6e 74 73 20 75 73 65 64 20 66 6f 72 20 64 65 62  nts used for deb
0d50: 75 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  ugging..      //
0d60: 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 54 68 69  / purposes.  Thi
0d70: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0d80: 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77   only recorded w
0d90: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20  hen compiled in 
0da0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22  the..      /// "
0db0: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0dc0: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0de0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0df0: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0e00: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0e10: 6f 74 68 65 72 43 6f 75 6e 74 73 3b 0d 0a 23 65  otherCounts;..#e
0e20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
0e30: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 23 65  region..      #e
0e40: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0e50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
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 0d 0a 0d 0a 20  ///////////.... 
0ea0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
0eb0: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  lic Methods..#if
0ec0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f   DEBUG..      //
0ed0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0ee0: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 64     /// Creates d
0ef0: 69 63 74 69 6f 6e 61 72 69 65 73 20 75 73 65 64  ictionaries used
0f00: 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 72 65   to store the re
0f10: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 65 61  ad counts for ea
0f20: 63 68 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ch of..      ///
0f30: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0f40: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
0f50: 6e 67 73 2e 20 20 54 68 65 73 65 20 6e 75 6d 62  ngs.  These numb
0f60: 65 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ers are used for
0f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 65 62 75  ..      /// debu
0f80: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
0f90: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
0fa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0fb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75  mmary>..      pu
0fc0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
0fd0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
0fe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0ff0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1000: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1020: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1030: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
1040: 72 65 61 74 65 20 74 68 65 20 64 69 63 74 69 6f  reate the dictio
1050: 6e 61 72 69 65 73 20 6f 66 20 73 74 61 74 69 73  naries of statis
1060: 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 0d 0a  tics that will..
1070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1080: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 20 74         contain t
1090: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d  he number of tim
10a0: 65 73 20 65 61 63 68 20 73 65 74 74 69 6e 67 20  es each setting 
10b0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
10c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
10d0: 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20  s been read...  
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1100: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
1110: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1140: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1150: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1170: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1180: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d  ileReadCounts ==
1190: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
11a0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
11b0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20  gFileReadCounts 
11c0: 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
11d0: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b  <string, int>();
11e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11f0: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
1200: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  herCounts = new 
1230: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1240: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20 20 20 20  g, int>();..    
1250: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1260: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1270: 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
12c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12d0: 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73    /// Increments
12e0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 20   the read count 
12f0: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
1300: 64 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67  d runtime config
1310: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
1320: 2f 2f 20 73 65 74 74 69 6e 67 2e 20 20 54 68 65  // setting.  The
1330: 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75  se numbers are u
1340: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
1350: 67 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75  g and testing pu
1360: 72 70 6f 73 65 73 0d 0a 20 20 20 20 20 20 2f 2f  rposes..      //
1370: 2f 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  / only...      /
1380: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1390: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
13a0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
13b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
13c0: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20   of the setting 
13d0: 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20  being read...   
13e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1400: 6d 20 6e 61 6d 65 3d 22 76 69 61 46 69 6c 65 22  m name="viaFile"
1410: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
1420: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 70 65  -zero if the spe
1430: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 20 69  cified setting i
1440: 73 20 62 65 69 6e 67 20 72 65 61 64 20 66 72 6f  s being read fro
1450: 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20  m the XML..     
1460: 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
1470: 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
1480: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1490: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
14a0: 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65 6e 74  c void Increment
14b0: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
14c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
14d0: 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20  ing name,..     
14e0: 20 20 20 20 20 62 6f 6f 6c 20 76 69 61 46 69 6c       bool viaFil
14f0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
1500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1510: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
1520: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1530: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1540: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1550: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1560: 55 70 64 61 74 65 20 73 74 61 74 69 73 74 69 63  Update statistic
1570: 73 20 66 6f 72 20 74 68 69 73 20 73 65 74 74 69  s for this setti
1580: 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ng value...     
1590: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
15b0: 69 61 46 69 6c 65 29 0d 0a 20 20 20 20 20 20 20  iaFile)..       
15c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15e0: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
15f0: 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ounts != null)..
1600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1610: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1620: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
1630: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1650: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
1660: 61 64 43 6f 75 6e 74 73 2e 54 72 79 47 65 74 56  adCounts.TryGetV
1670: 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20 63  alue(name, out c
1680: 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20 20 20  ount))..        
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61    settingFileRea
16b0: 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20  dCounts[name] = 
16c0: 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20  count + 1;..    
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1700: 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61    settingFileRea
1710: 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65  dCounts.Add(name
1720: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
1730: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1740: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1750: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
1760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1780: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
1790: 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c  eadCounts != nul
17a0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
17b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17d0: 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20  nt count;....   
17e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f0: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65     if (settingRe
1800: 61 64 43 6f 75 6e 74 73 2e 54 72 79 47 65 74 56  adCounts.TryGetV
1810: 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20 63  alue(name, out c
1820: 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20 20 20  ount))..        
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1840: 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75    settingReadCou
1850: 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e  nts[name] = coun
1860: 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20  t + 1;..        
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1880: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
18a0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e  ttingReadCounts.
18b0: 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20  Add(name, 1);.. 
18c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
18f0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
1900: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1950: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1960: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  ry>..      /// I
1970: 6e 63 72 65 6d 65 6e 74 73 20 74 68 65 20 73 70  ncrements the sp
1980: 65 63 69 66 69 65 64 20 63 6f 75 6e 74 65 72 2e  ecified counter.
1990: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
19a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
19b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
19c0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
19d0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
19e0: 20 63 6f 75 6e 74 65 72 20 62 65 69 6e 67 20 69   counter being i
19f0: 6e 63 72 65 6d 65 6e 74 65 64 2e 0d 0a 20 20 20  ncremented...   
1a00: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1a10: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
1a20: 61 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d  atic void Increm
1a30: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 0d 0a  entOtherCount(..
1a40: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1a50: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
1a60: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
1a70: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1a80: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1a90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1aa0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74 68           if (oth
1ab0: 65 72 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c  erCounts != null
1ac0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ad0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ae0: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1af0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b00: 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72 43        if (otherC
1b10: 6f 75 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75  ounts.TryGetValu
1b20: 65 28 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e  e(name, out coun
1b30: 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t))..           
1b40: 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72             other
1b50: 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63  Counts[name] = c
1b60: 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20  ount + 1;..     
1b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1b80: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1b90: 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f           otherCo
1ba0: 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31  unts.Add(name, 1
1bb0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1bc0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
1bd0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
1be0: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
1bf0: 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66  ion..  }..#endif
1c00: 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
1c10: 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
1c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 48  /....  #region H
1c70: 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 53 74  elper Methods St
1c80: 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 2f 2f  atic Class..  //
1c90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
1ca0: 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63  // This static c
1cb0: 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20 73 6f  lass provides so
1cc0: 6d 65 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20  me methods that 
1cd0: 61 72 65 20 73 68 61 72 65 64 20 62 65 74 77 65  are shared betwe
1ce0: 65 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 6e 61  en the..  /// na
1cf0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
1d00: 2d 6c 6f 61 64 65 72 20 61 6e 64 20 6f 74 68 65  -loader and othe
1d10: 72 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20 2f 2f  r classes...  //
1d20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1d30: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d40: 63 6c 61 73 73 20 48 65 6c 70 65 72 4d 65 74 68  class HelperMeth
1d50: 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ods..  {..      
1d60: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1d70: 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
1d80: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
1d90: 74 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c  tring DisplayNul
1da0: 6c 4f 62 6a 65 63 74 20 3d 20 22 3c 6e 75 6c 6c  lObject = "<null
1db0: 4f 62 6a 65 63 74 3e 22 3b 0d 0a 20 20 20 20 20  Object>";..     
1dc0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
1dd0: 74 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d 70  tring DisplayEmp
1de0: 74 79 53 74 72 69 6e 67 20 3d 20 22 3c 65 6d 70  tyString = "<emp
1df0: 74 79 53 74 72 69 6e 67 3e 22 3b 0d 0a 20 20 20  tyString>";..   
1e00: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1e10: 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 53   string DisplayS
1e20: 74 72 69 6e 67 46 6f 72 6d 61 74 20 3d 20 22 5c  tringFormat = "\
1e30: 22 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a 20 20 20 20  "{0}\"";....    
1e40: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e90: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1ea0: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
1eb0: 79 4e 75 6c 6c 41 72 72 61 79 20 3d 20 22 3c 6e  yNullArray = "<n
1ec0: 75 6c 6c 41 72 72 61 79 3e 22 3b 0d 0a 20 20 20  ullArray>";..   
1ed0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1ee0: 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 45   string DisplayE
1ef0: 6d 70 74 79 41 72 72 61 79 20 3d 20 22 3c 65 6d  mptyArray = "<em
1f00: 70 74 79 41 72 72 61 79 3e 22 3b 0d 0a 0d 0a 20  ptyArray>";.... 
1f10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f60: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1f70: 63 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79  const char Array
1f80: 4f 70 65 6e 20 3d 20 27 5b 27 3b 0d 0a 20 20 20  Open = '[';..   
1f90: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1fa0: 20 73 74 72 69 6e 67 20 45 6c 65 6d 65 6e 74 53   string ElementS
1fb0: 65 70 61 72 61 74 6f 72 20 3d 20 22 2c 20 22 3b  eparator = ", ";
1fc0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1fd0: 63 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79  const char Array
1fe0: 43 6c 6f 73 65 20 3d 20 27 5d 27 3b 0d 0a 0d 0a  Close = ']';....
1ff0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2040: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
2050: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
2060: 20 63 68 61 72 5b 5d 20 53 70 61 63 65 43 68 61   char[] SpaceCha
2070: 72 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  rs = {..        
2080: 20 20 27 5c 74 27 2c 20 27 5c 6e 27 2c 20 27 5c    '\t', '\n', '\
2090: 72 27 2c 20 27 5c 76 27 2c 20 27 5c 66 27 2c 20  r', '\v', '\f', 
20a0: 27 20 27 0d 0a 20 20 20 20 20 20 7d 3b 0d 0a 20  ' '..      };.. 
20b0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
20c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2120: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
2130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2140: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2150: 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73   This lock is us
2160: 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68  ed to protect th
2170: 65 20 73 74 61 74 69 63 20 3c 73 65 65 20 63 72  e static <see cr
2180: 65 66 3d 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 66  ef="isMono" /> f
2190: 69 65 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ield...      ///
21a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
21b0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
21c0: 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  c readonly objec
21d0: 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74  t staticSyncRoot
21e0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
21f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2240: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
2250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2260: 2f 2f 2f 20 54 68 69 73 20 74 79 70 65 20 69 73  /// This type is
2270: 20 6f 6e 6c 79 20 70 72 65 73 65 6e 74 20 77 68   only present wh
2280: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  en running on Mo
2290: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
22a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22b0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
22c0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
22d0: 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 20  MonoRuntimeType 
22e0: 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74 69 6d 65 22  = "Mono.Runtime"
22f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
2300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
2350: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2360: 20 2f 2f 2f 20 4b 65 65 70 73 20 74 72 61 63 6b   /// Keeps track
2370: 20 6f 66 20 77 68 65 74 68 65 72 20 77 65 20 61   of whether we a
2380: 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  re running on Mo
2390: 6e 6f 2e 20 20 49 6e 69 74 69 61 6c 6c 79 20 6e  no.  Initially n
23a0: 75 6c 6c 2c 20 69 74 20 69 73 0d 0a 20 20 20 20  ull, it is..    
23b0: 20 20 2f 2f 2f 20 73 65 74 20 62 79 20 74 68 65    /// set by the
23c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73 4d 6f   <see cref="IsMo
23d0: 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e  no" /> method on
23e0: 20 69 74 73 20 66 69 72 73 74 20 63 61 6c 6c 2e   its first call.
23f0: 20 20 4c 61 74 65 72 2c 20 69 74 0d 0a 20 20 20    Later, it..   
2400: 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75 72 6e     /// is return
2410: 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20 74  ed verbatim by t
2420: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73  he <see cref="Is
2430: 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Mono" /> method.
2440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
2460: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
2470: 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20 6e 75 6c 6c  l? isMono = null
2480: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
2490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
24e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
24f0: 20 2f 2f 2f 20 4b 65 65 70 73 20 74 72 61 63 6b   /// Keeps track
2500: 20 6f 66 20 77 68 65 74 68 65 72 20 77 65 20 73   of whether we s
2510: 75 63 63 65 73 73 66 75 6c 6c 79 20 69 6e 76 6f  uccessfully invo
2520: 6b 65 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ked the..      /
2530: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 65  // <see cref="De
2540: 62 75 67 67 65 72 2e 42 72 65 61 6b 22 20 2f 3e  bugger.Break" />
2550: 20 6d 65 74 68 6f 64 2e 20 20 49 6e 69 74 69 61   method.  Initia
2560: 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 20  lly null, it is 
2570: 73 65 74 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  set by..      //
2580: 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / the <see cref=
2590: 22 4d 61 79 62 65 42 72 65 61 6b 49 6e 74 6f 44  "MaybeBreakIntoD
25a0: 65 62 75 67 67 65 72 22 20 2f 3e 20 6d 65 74 68  ebugger" /> meth
25b0: 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20  od on its first 
25c0: 63 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  call...      ///
25d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
25e0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
25f0: 63 20 62 6f 6f 6c 3f 20 64 65 62 75 67 67 65 72  c bool? debugger
2600: 42 72 65 61 6b 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  Break = null;.. 
2610: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2620: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2680: 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
2690: 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ods..      /// <
26a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26b0: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
26c0: 68 65 20 49 44 20 6f 66 20 74 68 65 20 63 75 72  he ID of the cur
26d0: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 20 20 4f  rent process.  O
26e0: 6e 6c 79 20 75 73 65 64 20 66 6f 72 20 64 65 62  nly used for deb
26f0: 75 67 67 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  ugging...      /
2700: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2710: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2720: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
2730: 65 20 49 44 20 6f 66 20 74 68 65 20 63 75 72 72  e ID of the curr
2740: 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
2750: 20 7a 65 72 6f 20 69 66 20 69 74 20 63 61 6e 6e   zero if it cann
2760: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
2770: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
2780: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
2790: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
27a0: 74 20 47 65 74 50 72 6f 63 65 73 73 49 64 28 29  t GetProcessId()
27b0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
27c0: 20 20 20 20 20 50 72 6f 63 65 73 73 20 70 72 6f       Process pro
27d0: 63 65 73 73 20 3d 20 50 72 6f 63 65 73 73 2e 47  cess = Process.G
27e0: 65 74 43 75 72 72 65 6e 74 50 72 6f 63 65 73 73  etCurrentProcess
27f0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2800: 20 69 66 20 28 70 72 6f 63 65 73 73 20 3d 3d 20   if (process == 
2810: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2820: 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a       return 0;..
2830: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
2840: 72 6e 20 70 72 6f 63 65 73 73 2e 49 64 3b 0d 0a  rn process.Id;..
2850: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2860: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
28c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
28d0: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 6f 72  mines whether or
28e0: 20 6e 6f 74 20 74 68 69 73 20 61 73 73 65 6d 62   not this assemb
28f0: 6c 79 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e  ly is running on
2900: 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   Mono...      //
2910: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2920: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2930: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
2940: 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 61 73  -zero if this as
2950: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
2960: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
2970: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2980: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2990: 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 4d 6f  static bool IsMo
29a0: 6e 6f 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  no()..      {.. 
29b0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
29c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29d0: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
29e0: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a10: 20 20 20 69 66 20 28 69 73 4d 6f 6e 6f 20 3d 3d     if (isMono ==
2a20: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73                is
2a40: 4d 6f 6e 6f 20 3d 20 28 54 79 70 65 2e 47 65 74  Mono = (Type.Get
2a50: 54 79 70 65 28 4d 6f 6e 6f 52 75 6e 74 69 6d 65  Type(MonoRuntime
2a60: 54 79 70 65 29 20 21 3d 20 6e 75 6c 6c 29 3b 0d  Type) != null);.
2a70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a80: 20 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f 6f       return (boo
2a90: 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20 20 20 20 20  l)isMono;..     
2aa0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2ab0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ac0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ae0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
2af0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ng...          }
2b00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
2b10: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
2b20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
2b30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b90: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
2ba0: 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  nal Methods..   
2bb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2bc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74  ..      /// If t
2bd0: 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
2be0: 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67  e_BreakIntoDebug
2bf0: 67 65 72 22 20 63 6f 6e 66 69 67 75 72 61 74 69  ger" configurati
2c00: 6f 6e 20 73 65 74 74 69 6e 67 20 69 73 0d 0a 20  on setting is.. 
2c10: 20 20 20 20 20 2f 2f 2f 20 70 72 65 73 65 6e 74       /// present
2c20: 20 28 65 2e 67 2e 20 76 69 61 20 74 68 65 20 65   (e.g. via the e
2c30: 6e 76 69 72 6f 6e 6d 65 6e 74 29 2c 20 67 69 76  nvironment), giv
2c40: 65 20 74 68 65 20 69 6e 74 65 72 61 63 74 69 76  e the interactiv
2c50: 65 20 75 73 65 72 20 61 6e 0d 0a 20 20 20 20 20  e user an..     
2c60: 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79   /// opportunity
2c70: 20 74 6f 20 61 74 74 61 63 68 20 61 20 64 65 62   to attach a deb
2c80: 75 67 67 65 72 20 74 6f 20 74 68 65 20 63 75 72  ugger to the cur
2c90: 72 65 6e 74 20 70 72 6f 63 65 73 73 3b 20 6f 74  rent process; ot
2ca0: 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
2cb0: 2f 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d  /// do nothing..
2cc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2cd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
2ce0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
2cf0: 64 20 4d 61 79 62 65 42 72 65 61 6b 49 6e 74 6f  d MaybeBreakInto
2d00: 44 65 62 75 67 67 65 72 28 29 0d 0a 20 20 20 20  Debugger()..    
2d10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
2d20: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
2d30: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
2d40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d50: 20 69 66 20 28 64 65 62 75 67 67 65 72 42 72 65   if (debuggerBre
2d60: 61 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ak != null)..   
2d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d80: 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20  eturn;..        
2d90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2da0: 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76   if (UnsafeNativ
2db0: 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74  eMethods.GetSett
2dc0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
2dd0: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
2de0: 6f 61 64 53 51 4c 69 74 65 5f 42 72 65 61 6b 49  oadSQLite_BreakI
2df0: 6e 74 6f 44 65 62 75 67 67 65 72 22 2c 20 6e 75  ntoDebugger", nu
2e00: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
2e10: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e20: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2e30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2e40: 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 75  TE: Attempt to u
2e50: 73 65 20 74 68 65 20 43 6f 6e 73 6f 6c 65 20 69  se the Console i
2e60: 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 6d 70  n order to promp
2e70: 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  t the..         
2e80: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
2e90: 74 65 72 61 63 74 69 76 65 20 75 73 65 72 20 28  teractive user (
2ea0: 69 66 20 61 6e 79 29 2e 20 20 54 68 69 73 20 6d  if any).  This m
2eb0: 61 79 20 66 61 69 6c 20 66 6f 72 20 61 6e 79 0d  ay fail for any.
2ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
2ed0: 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f  /       number o
2ee0: 66 20 72 65 61 73 6f 6e 73 2e 20 20 45 76 65 6e  f reasons.  Even
2ef0: 20 69 6e 20 74 68 6f 73 65 20 63 61 73 65 73 2c   in those cases,
2f00: 20 77 65 20 73 74 69 6c 6c 0d 0a 20 20 20 20 20   we still..     
2f10: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2f20: 20 20 77 61 6e 74 20 74 6f 20 69 73 73 75 65 20    want to issue 
2f30: 74 68 65 20 61 63 74 75 61 6c 20 72 65 71 75 65  the actual reque
2f40: 73 74 20 74 6f 20 62 72 65 61 6b 20 69 6e 74 6f  st to break into
2f50: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
2f60: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65 62      //       deb
2f70: 75 67 67 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ugger...        
2f80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2f90: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2fa0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc0: 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65 4c 69 6e  Console.WriteLin
2fd0: 65 28 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  e(StringFormat(.
2fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ff0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
3000: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
3010: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
3020: 20 20 20 20 20 20 20 20 20 20 22 41 74 74 61 63            "Attac
3030: 68 20 61 20 64 65 62 75 67 67 65 72 20 74 6f 20  h a debugger to 
3040: 70 72 6f 63 65 73 73 20 7b 30 7d 20 22 20 2b 0d  process {0} " +.
3050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3060: 20 20 20 20 20 20 20 22 61 6e 64 20 70 72 65 73         "and pres
3070: 73 20 61 6e 79 20 6b 65 79 20 74 6f 20 63 6f 6e  s any key to con
3080: 74 69 6e 75 65 2e 22 2c 0d 0a 20 20 20 20 20 20  tinue.",..      
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 47 65 74 50 72 6f 63 65 73 73 49 64 28 29 29 29  GetProcessId()))
30b0: 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ;....#if PLATFOR
30c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30d0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
30e0: 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52 65        Console.Re
30f0: 61 64 4c 69 6e 65 28 29 3b 0d 0a 23 65 6c 73 65  adLine();..#else
3100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3110: 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52 65 61 64      Console.Read
3120: 4b 65 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Key();..#endif..
3130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
3140: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
3150: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
3160: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
3170: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
3180: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
3190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
31a0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
31b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31c0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
31d0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
31e0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
31f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3200: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
3210: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3230: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
3240: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
3250: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
3260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3270: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
3280: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
3290: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
32a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
32b0: 46 61 69 6c 65 64 20 74 6f 20 69 73 73 75 65 20  Failed to issue 
32c0: 64 65 62 75 67 67 65 72 20 70 72 6f 6d 70 74 2c  debugger prompt,
32d0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f0: 22 7b 30 7d 20 6d 61 79 20 62 65 20 75 6e 75 73  "{0} may be unus
3300: 61 62 6c 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  able: {1}",..   
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 43 6f         typeof(Co
3330: 6e 73 6f 6c 65 29 2c 20 65 29 29 3b 20 2f 2a 20  nsole), e)); /* 
3340: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
3350: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
3380: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
33b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33c0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
33e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33f0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
3400: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3410: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 67 65           Debugge
3420: 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 0d 0a 20 20  r.Break();....  
3430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3440: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
3450: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
3460: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3480: 20 20 64 65 62 75 67 67 65 72 42 72 65 61 6b 20    debuggerBreak 
3490: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
34a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
34b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
34d0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
34e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34f0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
3500: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3520: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3530: 20 20 20 20 20 20 20 20 20 64 65 62 75 67 67 65           debugge
3540: 72 42 72 65 61 6b 20 3d 20 66 61 6c 73 65 3b 0d  rBreak = false;.
3550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3560: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3570: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 3b            throw;
3580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3590: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
35a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35b0: 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3600: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3610: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
3620: 65 72 6d 69 6e 65 73 20 69 66 20 70 72 65 70 61  ermines if prepa
3630: 72 69 6e 67 20 61 20 71 75 65 72 79 20 73 68 6f  ring a query sho
3640: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
3650: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3660: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3670: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
3680: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
3690: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
36a0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
36b0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
36c0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
36d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
36e0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
36f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
3700: 7a 65 72 6f 20 69 66 20 74 68 65 20 71 75 65 72  zero if the quer
3710: 79 20 70 72 65 70 61 72 61 74 69 6f 6e 20 73 68  y preparation sh
3720: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
3730: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
3740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
3750: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
3760: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
3770: 6f 6c 20 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a  ol LogPrepare(..
3780: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
3790: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
37a0: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
37b0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
37c0: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
37d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
37e0: 46 6c 61 67 73 2e 4c 6f 67 50 72 65 70 61 72 65  Flags.LogPrepare
37f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
3800: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
3810: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3820: 61 67 73 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b  ags.LogPrepare);
3830: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
3840: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
3890: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
38a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
38b0: 65 72 6d 69 6e 65 73 20 69 66 20 70 72 65 2d 70  ermines if pre-p
38c0: 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67  arameter binding
38d0: 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
38e0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
38f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3900: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3910: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
3920: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
3930: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3940: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
3950: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
3960: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3970: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3980: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3990: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
39a0: 70 72 65 2d 70 61 72 61 6d 65 74 65 72 20 62 69  pre-parameter bi
39b0: 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20  nding should be 
39c0: 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73  logged; otherwis
39d0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
39e0: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
39f0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3a00: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3a10: 20 62 6f 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64   bool LogPreBind
3a20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
3a30: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
3a40: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
3a50: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
3a60: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
3a70: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
3a80: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65 42  ionFlags.LogPreB
3a90: 69 6e 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ind;..          
3aa0: 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d  return (flags ==
3ab0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3ac0: 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e  nFlags.LogPreBin
3ad0: 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  d);..      }....
3ae0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3b30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3b40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3b50: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 70 61  Determines if pa
3b60: 72 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20  rameter binding 
3b70: 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64  should be logged
3b80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
3b90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3bb0: 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f  flags">..      /
3bc0: 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73  // The flags ass
3bd0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
3be0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
3bf0: 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20  on object...    
3c00: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
3c10: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
3c20: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
3c30: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70  on-zero if the p
3c40: 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67  arameter binding
3c50: 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
3c60: 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65  d; otherwise, ze
3c70: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
3c80: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3c90: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3ca0: 20 62 6f 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a   bool LogBind(..
3cb0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
3cc0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
3cd0: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
3ce0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
3cf0: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
3d00: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
3d10: 46 6c 61 67 73 2e 4c 6f 67 42 69 6e 64 3b 0d 0a  Flags.LogBind;..
3d20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3d30: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
3d40: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
3d50: 2e 4c 6f 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20  .LogBind);..    
3d60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3db0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3dc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3dd0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
3de0: 73 20 69 66 20 61 6e 20 65 78 63 65 70 74 69 6f  s if an exceptio
3df0: 6e 20 69 6e 20 61 20 6e 61 74 69 76 65 20 63 61  n in a native ca
3e00: 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 62 65  llback should be
3e10: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
3e20: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3e30: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
3e40: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
3e50: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
3e60: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
3e70: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
3e80: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
3e90: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3ea0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3eb0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3ec0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
3ed0: 66 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20  f the exception 
3ee0: 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64  should be logged
3ef0: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
3f00: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
3f10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3f20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3f30: 62 6f 6f 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b  bool LogCallback
3f40: 45 78 63 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20  Exceptions(..   
3f50: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
3f60: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
3f70: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
3f80: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
3f90: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
3fa0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
3fb0: 67 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78  gs.LogCallbackEx
3fc0: 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  ception;..      
3fd0: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
3fe0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
3ff0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61  ctionFlags.LogCa
4000: 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 29  llbackException)
4010: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
4020: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
4030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4070: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4080: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
4090: 74 65 72 6d 69 6e 65 73 20 69 66 20 62 61 63 6b  termines if back
40a0: 75 70 20 41 50 49 20 65 72 72 6f 72 73 20 73 68  up API errors sh
40b0: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
40c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
40d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
40e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
40f0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
4100: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
4110: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
4120: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
4130: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
4140: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4150: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4160: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
4170: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 62 61 63  -zero if the bac
4180: 6b 75 70 20 41 50 49 20 65 72 72 6f 72 20 73 68  kup API error sh
4190: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
41a0: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
41b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
41c0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
41d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
41e0: 6f 6c 20 4c 6f 67 42 61 63 6b 75 70 28 0d 0a 20  ol LogBackup(.. 
41f0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
4200: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
4210: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
4220: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
4230: 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53        flags &= S
4240: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
4250: 6c 61 67 73 2e 4c 6f 67 42 61 63 6b 75 70 3b 0d  lags.LogBackup;.
4260: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
4270: 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69  n (flags == SQLi
4280: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
4290: 73 2e 4c 6f 67 42 61 63 6b 75 70 29 3b 0d 0a 20  s.LogBackup);.. 
42a0: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e       }....#if IN
42b0: 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
42c0: 42 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  BLE..      /////
42d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4310: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4320: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4330: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
4340: 69 66 20 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74  if logging for t
4350: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
4360: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
4370: 6c 61 73 73 20 69 73 0d 0a 20 20 20 20 20 20 2f  lass is..      /
4380: 2f 2f 20 64 69 73 61 62 6c 65 64 2e 0d 0a 20 20  // disabled...  
4390: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
43a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
43b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
43c0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
43d0: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
43e0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
43f0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
4400: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
4410: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
4420: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4430: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
4440: 72 6f 20 69 66 20 6c 6f 67 67 69 6e 67 20 66 6f  ro if logging fo
4450: 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  r the <see cref=
4460: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
4470: 3e 20 63 6c 61 73 73 20 69 73 0d 0a 20 20 20 20  > class is..    
4480: 20 20 2f 2f 2f 20 64 69 73 61 62 6c 65 64 3b 20    /// disabled; 
4490: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
44a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
44b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
44c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
44d0: 6f 6c 20 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 28 0d  ol NoLogModule(.
44e0: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
44f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
4500: 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
4510: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
4520: 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d          flags &=
4530: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
4540: 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75  nFlags.NoLogModu
4550: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72  le;..          r
4560: 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20  eturn (flags == 
4570: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4580: 46 6c 61 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c  Flags.NoLogModul
4590: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  e);..      }....
45a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
4600: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4610: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 3c 73  Determines if <s
4620: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
4630: 6f 64 75 6c 65 22 20 2f 3e 20 65 72 72 6f 72 73  odule" /> errors
4640: 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
4650: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
4660: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4670: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4680: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
4690: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
46a0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
46b0: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
46c0: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
46d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
46e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
46f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
4700: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
4710: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
4720: 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65 72 72 6f  eModule" /> erro
4730: 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  r should be logg
4740: 65 64 3b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ed;..      /// o
4750: 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d  therwise, zero..
4760: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
4770: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
4780: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
4790: 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72  l LogModuleError
47a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
47b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
47c0: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
47d0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
47e0: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
47f0: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
4800: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75  ionFlags.LogModu
4810: 6c 65 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  leError;..      
4820: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
4830: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
4840: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f  ctionFlags.LogMo
4850: 64 75 6c 65 45 72 72 6f 72 29 3b 0d 0a 20 20 20  duleError);..   
4860: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
48c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
48d0: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
48e0: 65 73 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d  es if <see cref=
48f0: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
4900: 3e 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f  > exceptions sho
4910: 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  uld be..      //
4920: 2f 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20  / logged...     
4930: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4940: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
4950: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
4960: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
4970: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
4980: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
4990: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
49a0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
49b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
49c0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
49d0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
49e0: 69 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  if the <see cref
49f0: 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
4a00: 2f 3e 20 65 78 63 65 70 74 69 6f 6e 20 73 68 6f  /> exception sho
4a10: 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  uld be..      //
4a20: 2f 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77  / logged; otherw
4a30: 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
4a40: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
4a50: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
4a60: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67   static bool Log
4a70: 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 28  ModuleException(
4a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
4a90: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
4aa0: 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20  s flags..       
4ab0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
4ac0: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 26           flags &
4ad0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
4ae0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
4af0: 65 45 78 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20  eException;..   
4b00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66         return (f
4b10: 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f  lags == SQLiteCo
4b20: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4b30: 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e  gModuleException
4b40: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  );..      }..#en
4b50: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
4b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
4bb0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4bc0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
4bd0: 73 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74  s if the current
4be0: 20 70 72 6f 63 65 73 73 20 69 73 20 72 75 6e 6e   process is runn
4bf0: 69 6e 67 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68  ing on one of th
4c00: 65 20 57 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20  e Windows..     
4c10: 20 2f 2f 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66   /// [sub-]platf
4c20: 6f 72 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  orms...      ///
4c30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4c40: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
4c60: 7a 65 72 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e  zero when runnin
4c70: 67 20 6f 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74  g on Windows; ot
4c80: 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a  herwise, zero...
4c90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4ca0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
4cb0: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
4cc0: 20 49 73 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20   IsWindows()..  
4cd0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4ce0: 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74   PlatformID plat
4cf0: 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e  formId = Environ
4d00: 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50  ment.OSVersion.P
4d10: 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20  latform;....    
4d20: 20 20 20 20 20 20 69 66 20 28 28 70 6c 61 74 66        if ((platf
4d30: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
4d40: 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a  mID.Win32S) ||..
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
4d60: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
4d70: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e  tformID.Win32Win
4d80: 64 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20  dows) ||..      
4d90: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
4da0: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
4db0: 44 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20  D.Win32NT) ||.. 
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c               (pl
4dd0: 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74  atformId == Plat
4de0: 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a  formID.WinCE))..
4df0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4e00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4e10: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
4e20: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4e30: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
4e40: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
4e50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
4ea0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4ec0: 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
4ed0: 6f 75 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20  ound the..      
4ee0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
4ef0: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f  tring.Format(IFo
4f00: 72 6d 61 74 50 72 6f 76 69 64 65 72 2c 53 74 72  rmatProvider,Str
4f10: 69 6e 67 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f  ing,Object[])" /
4f20: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
4f30: 20 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74   /// On Mono, it
4f40: 20 68 61 73 20 74 6f 20 63 61 6c 6c 20 74 68 65   has to call the
4f50: 20 6d 65 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64   method overload
4f60: 20 77 69 74 68 6f 75 74 20 74 68 65 0d 0a 20 20   without the..  
4f70: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
4f80: 66 3d 22 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  f="IFormatProvid
4f90: 65 72 22 20 2f 3e 20 70 61 72 61 6d 65 74 65 72  er" /> parameter
4fa0: 2c 20 64 75 65 20 74 6f 20 61 20 62 75 67 20 69  , due to a bug i
4fb0: 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f  n Mono...      /
4fc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4fd0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
4fe0: 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e  name="provider">
4ff0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
5000: 20 69 73 20 75 73 65 64 20 66 6f 72 20 63 75 6c   is used for cul
5010: 74 75 72 65 2d 73 70 65 63 69 66 69 63 20 66 6f  ture-specific fo
5020: 72 6d 61 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20  rmatting...     
5030: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
5040: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
5050: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a  name="format">..
5060: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f        /// The fo
5070: 72 6d 61 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20  rmat string...  
5080: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
50a0: 61 6d 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d  am name="args">.
50b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72  .      /// An ar
50c0: 72 61 79 20 74 68 65 20 6f 62 6a 65 63 74 73 20  ray the objects 
50d0: 74 6f 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20  to format...    
50e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
50f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
5100: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
5110: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72  he resulting str
5120: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
5130: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5140: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5150: 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46  c string StringF
5160: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
5170: 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65    IFormatProvide
5180: 72 20 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20  r provider,..   
5190: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
51a0: 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
51b0: 20 70 61 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d   params object[]
51c0: 20 61 72 67 73 0d 0a 20 20 20 20 20 20 20 20 20   args..         
51d0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
51e0: 20 20 20 20 20 20 20 69 66 20 28 49 73 4d 6f 6e         if (IsMon
51f0: 6f 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  o())..          
5200: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
5210: 67 2e 46 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c  g.Format(format,
5220: 20 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 20   args);..       
5230: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
5240: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
5250: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76  ring.Format(prov
5260: 69 64 65 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72  ider, format, ar
5270: 67 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  gs);..      }.. 
5280: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5290: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
52f0: 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
5300: 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ds..      public
5310: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
5320: 6f 44 69 73 70 6c 61 79 53 74 72 69 6e 67 28 0d  oDisplayString(.
5330: 0a 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63  .          objec
5340: 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  t value..       
5350: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
5360: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
5370: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
5380: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5390: 6e 20 44 69 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a  n DisplayNullObj
53a0: 65 63 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ect;....        
53b0: 20 20 73 74 72 69 6e 67 20 73 74 72 69 6e 67 56    string stringV
53c0: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 54 6f 53  alue = value.ToS
53d0: 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20  tring();....    
53e0: 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e 67        if (string
53f0: 56 61 6c 75 65 2e 4c 65 6e 67 74 68 20 3d 3d 20  Value.Length == 
5400: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
5410: 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79    return Display
5420: 45 6d 70 74 79 53 74 72 69 6e 67 3b 0d 0a 0d 0a  EmptyString;....
5430: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
5440: 72 69 6e 67 56 61 6c 75 65 2e 49 6e 64 65 78 4f  ringValue.IndexO
5450: 66 41 6e 79 28 53 70 61 63 65 43 68 61 72 73 29  fAny(SpaceChars)
5460: 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   < 0)..         
5470: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 69       return stri
5480: 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  ngValue;....    
5490: 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 65 6c        return Hel
54a0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
54b0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
54c0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
54d0: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
54e0: 74 75 72 65 2c 20 44 69 73 70 6c 61 79 53 74 72  ture, DisplayStr
54f0: 69 6e 67 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  ingFormat,..    
5500: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
5510: 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d  Value);..      }
5520: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62  ///....      pub
5580: 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
5590: 67 20 54 6f 44 69 73 70 6c 61 79 53 74 72 69 6e  g ToDisplayStrin
55a0: 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 72  g(..          Ar
55b0: 72 61 79 20 61 72 72 61 79 0d 0a 20 20 20 20 20  ray array..     
55c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
55d0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
55e0: 72 72 61 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rray == null).. 
55f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5600: 75 72 6e 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41  urn DisplayNullA
5610: 72 72 61 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rray;....       
5620: 20 20 20 69 66 20 28 61 72 72 61 79 2e 4c 65 6e     if (array.Len
5630: 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  gth == 0)..     
5640: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5650: 44 69 73 70 6c 61 79 45 6d 70 74 79 41 72 72 61  DisplayEmptyArra
5660: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
5670: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65  StringBuilder re
5680: 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e  sult = new Strin
5690: 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20  gBuilder();.... 
56a0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
56b0: 20 28 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 69   (object value i
56c0: 6e 20 61 72 72 61 79 29 0d 0a 20 20 20 20 20 20  n array)..      
56d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
56e0: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e       if (result.
56f0: 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20  Length > 0)..   
5700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5710: 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 45 6c 65  esult.Append(Ele
5720: 6d 65 6e 74 53 65 70 61 72 61 74 6f 72 29 3b 0d  mentSeparator);.
5730: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5740: 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 54   result.Append(T
5750: 6f 44 69 73 70 6c 61 79 53 74 72 69 6e 67 28 76  oDisplayString(v
5760: 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  alue));..       
5770: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
5780: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
5790: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
57a0: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
57b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
57c0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
57d0: 20 20 20 20 72 65 73 75 6c 74 2e 49 6e 73 65 72      result.Inser
57e0: 74 28 30 2c 20 41 72 72 61 79 4f 70 65 6e 2e 54  t(0, ArrayOpen.T
57f0: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 23 65 6c  oString());..#el
5800: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
5810: 20 20 72 65 73 75 6c 74 2e 49 6e 73 65 72 74 28    result.Insert(
5820: 30 2c 20 41 72 72 61 79 4f 70 65 6e 29 3b 0d 0a  0, ArrayOpen);..
5830: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
5840: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
5850: 70 70 65 6e 64 28 41 72 72 61 79 43 6c 6f 73 65  ppend(ArrayClose
5860: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
5870: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
5880: 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72  urn result.ToStr
5890: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ing();..      }.
58a0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
58b0: 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
58c0: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5910: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
5920: 67 69 6f 6e 20 4e 61 74 69 76 65 20 4c 69 62 72  gion Native Libr
5930: 61 72 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73  ary Helper Class
5940: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
5950: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74  >..  /// This st
5960: 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69  atic class provi
5970: 64 65 73 20 61 20 74 68 69 6e 20 77 72 61 70 70  des a thin wrapp
5980: 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 6e 61  er around the na
5990: 74 69 76 65 20 6c 69 62 72 61 72 79 0d 0a 20 20  tive library..  
59a0: 2f 2f 2f 20 6c 6f 61 64 69 6e 67 20 66 65 61 74  /// loading feat
59b0: 75 72 65 73 20 6f 66 20 74 68 65 20 75 6e 64 65  ures of the unde
59c0: 72 6c 79 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e  rlying platform.
59d0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
59e0: 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  y>..  internal s
59f0: 74 61 74 69 63 20 63 6c 61 73 73 20 4e 61 74 69  tatic class Nati
5a00: 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65 72 0d  veLibraryHelper.
5a10: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67  .  {..      #reg
5a20: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 65 6c 65  ion Private Dele
5a30: 67 61 74 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  gates..      ///
5a40: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5a50: 20 20 2f 2f 2f 20 54 68 69 73 20 64 65 6c 65 67    /// This deleg
5a60: 61 74 65 20 69 73 20 75 73 65 64 20 74 6f 20 77  ate is used to w
5a70: 72 61 70 20 74 68 65 20 63 6f 6e 63 65 70 74 20  rap the concept 
5a80: 6f 66 20 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74  of loading a nat
5a90: 69 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c  ive..      /// l
5aa0: 69 62 72 61 72 79 2c 20 62 61 73 65 64 20 6f 6e  ibrary, based on
5ab0: 20 61 20 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e   a file name, an
5ac0: 64 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  d returning the 
5ad0: 6c 6f 61 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20  loaded module.. 
5ae0: 20 20 20 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e       /// handle.
5af0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5b00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5b10: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
5b20: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
5b30: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
5b40: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
5b50: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
5b60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5b70: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5b80: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5b90: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
5ba0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
5bb0: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
5bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
5bd0: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
5be0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5bf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 64 65        private de
5c00: 6c 65 67 61 74 65 20 49 6e 74 50 74 72 20 4c 6f  legate IntPtr Lo
5c10: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
5c20: 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  k(..          st
5c30: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
5c40: 20 20 20 20 20 29 3b 0d 0a 20 20 20 20 20 20 23       );..      #
5c50: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
5c60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5cb0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
5cc0: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
5cd0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5ce0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
5cf0: 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
5d00: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
5d10: 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ive library file
5d20: 20 75 73 69 6e 67 20 74 68 65 20 57 69 6e 33 32   using the Win32
5d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e  ..      /// API.
5d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5d50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5d60: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
5d70: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
5d80: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
5d90: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
5da0: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
5db0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5dc0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5dd0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5de0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
5df0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
5e00: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
5e10: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
5e20: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
5e30: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5e40: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
5e50: 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64  atic IntPtr Load
5e60: 4c 69 62 72 61 72 79 57 69 6e 33 32 28 0d 0a 20  LibraryWin32(.. 
5e70: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
5e80: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
5e90: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
5ea0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5eb0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
5ec0: 68 6f 64 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69  hodsWin32.LoadLi
5ed0: 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b  brary(fileName);
5ee0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5ef0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5f40: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
5f50: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
5f60: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5f70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
5f80: 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20  ttempts to load 
5f90: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
5fa0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c  tive library fil
5fb0: 65 20 75 73 69 6e 67 20 74 68 65 20 50 4f 53 49  e using the POSI
5fc0: 58 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49  X..      /// API
5fd0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
5fe0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5ff0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6000: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
6010: 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e    /// The file n
6020: 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76  ame of the nativ
6030: 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61  e library to loa
6040: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
6050: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6060: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6070: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
6080: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
6090: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
60a0: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
60b0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
60c0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
60d0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
60e0: 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61  tatic IntPtr Loa
60f0: 64 4c 69 62 72 61 72 79 50 6f 73 69 78 28 0d 0a  dLibraryPosix(..
6100: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
6110: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
6120: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
6130: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
6140: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
6150: 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65  thodsPosix.dlope
6160: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
6170: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61    fileName, Unsa
6180: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50  feNativeMethodsP
6190: 6f 73 69 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c  osix.RTLD_DEFAUL
61a0: 54 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  T);..      }..#e
61b0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
61c0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6220: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
6230: 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  c Methods..     
6240: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6250: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
6260: 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73  ts to load the s
6270: 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
6280: 6c 69 62 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20  library file... 
6290: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
62a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
62b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
62c0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
62d0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
62e0: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
62f0: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6310: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6320: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6330: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6340: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6350: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6360: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6370: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6380: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6390: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
63a0: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
63b0: 61 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ary(..          
63c0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
63d0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
63e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
63f0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 43 61 6c 6c   LoadLibraryCall
6400: 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20  back callback = 
6410: 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33 32  LoadLibraryWin32
6420: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
6430: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
6440: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ORK..          i
6450: 66 20 28 21 48 65 6c 70 65 72 4d 65 74 68 6f 64  f (!HelperMethod
6460: 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a  s.IsWindows())..
6470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
6480: 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62  llback = LoadLib
6490: 72 61 72 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64  raryPosix;..#end
64a0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
64b0: 72 65 74 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28  return callback(
64c0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  fileName);..    
64d0: 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
64e0: 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
64f0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6550: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
6560: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
6570: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
6580: 28 50 4f 53 49 58 29 0d 0a 23 69 66 20 21 50 4c  (POSIX)..#if !PL
6590: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
65a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c  AMEWORK..  /// <
65b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
65c0: 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61  This class decla
65d0: 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  res P/Invoke met
65e0: 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74  hods to call nat
65f0: 69 76 65 20 50 4f 53 49 58 20 41 50 49 73 2e 0d  ive POSIX APIs..
6600: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
6610: 3e 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  >..  [SuppressUn
6620: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
6630: 69 74 79 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ity]..  internal
6640: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
6650: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
6660: 73 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20  sPosix..  {..   
6670: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
66c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
66d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
66e0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
66f0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
6700: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 55  aps the native U
6710: 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20  nix dlopen..    
6720: 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20    /// function. 
6730: 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20 64   See the POSIX d
6740: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
6750: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
6760: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
6770: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
6780: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6790: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
67a0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
67b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
67c0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78  e name of the ex
67d0: 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79  ecutable library
67e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
67f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6800: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
6810: 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  de">..      /// 
6820: 54 68 69 73 20 6d 75 73 74 20 62 65 20 61 20 63  This must be a c
6830: 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68  ombination of th
6840: 65 20 69 6e 64 69 76 69 64 75 61 6c 20 62 69 74  e individual bit
6850: 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59   flags RTLD_LAZY
6860: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c  ,..      /// RTL
6870: 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42  D_NOW, RTLD_GLOB
6880: 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f  AL, and/or RTLD_
6890: 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f  LOCAL...      //
68a0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
68b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
68c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
68d0: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
68e0: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
68f0: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
6900: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
6910: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
6920: 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ns>..      [DllI
6930: 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61  mport("__Interna
6940: 6c 22 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  l", EntryPoint =
6950: 20 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20   "dlopen",..    
6960: 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e        CallingCon
6970: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6980: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6990: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
69a0: 72 53 65 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20  rSet.Ansi,..    
69b0: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
69c0: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
69d0: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
69e0: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20  har = true,..   
69f0: 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72         SetLastEr
6a00: 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20  ror = true)]..  
6a10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6a20: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6a30: 72 20 64 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20  r dlopen(string 
6a40: 66 69 6c 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f  fileName, int mo
6a50: 64 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  de);....      //
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6ab0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6ac0: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
6ad0: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62  with dlopen(), b
6ae0: 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  ind function cal
6af0: 6c 73 20 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20  ls lazily...    
6b00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6b10: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6b20: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
6b30: 4c 41 5a 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20  LAZY = 0x1;.... 
6b40: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6b90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6ba0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
6bb0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
6bc0: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
6bd0: 69 6f 6e 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69  ion calls immedi
6be0: 61 74 65 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ately...      //
6bf0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6c00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
6c10: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20  st int RTLD_NOW 
6c20: 3d 20 30 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20  = 0x2;....      
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6c80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6c90: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
6ca0: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
6cb0: 20 6d 61 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c   make symbols gl
6cc0: 6f 62 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65  obally available
6cd0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6ce0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
6cf0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
6d00: 74 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20  t RTLD_GLOBAL = 
6d10: 30 78 31 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  0x100;....      
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6d70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6d80: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
6d90: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
6da0: 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 52 54 4c   opposite of RTL
6db0: 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68  D_GLOBAL, and th
6dc0: 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20  e default...    
6dd0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6de0: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6df0: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
6e00: 4c 4f 43 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a  LOCAL = 0x000;..
6e10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
6e70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6e80: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
6e90: 6c 6f 70 65 6e 28 29 2c 20 74 68 65 20 64 65 66  lopen(), the def
6ea0: 61 75 6c 74 73 20 75 73 65 64 20 62 79 20 74 68  aults used by th
6eb0: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
6ec0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ed0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
6ee0: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
6ef0: 44 45 46 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e  DEFAULT = RTLD_N
6f00: 4f 57 20 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c  OW | RTLD_GLOBAL
6f10: 3b 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  ;..  }..#endif..
6f20: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6f80: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
6f90: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
6fa0: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
6fb0: 61 73 73 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f  ass (Win32)..  /
6fc0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6fd0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64  /// This class d
6fe0: 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65  eclares P/Invoke
6ff0: 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c   methods to call
7000: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 41 50   native Win32 AP
7010: 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  Is...  /// </sum
7020: 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54  mary>..#if !PLAT
7030: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7040: 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65  EWORK..  [Suppre
7050: 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53  ssUnmanagedCodeS
7060: 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66  ecurity]..#endif
7070: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
7080: 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65  tic class Unsafe
7090: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
70a0: 33 32 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  32..  {..      /
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 0d 0a 20 20 20 20 20 20  ////////..      
7100: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7110: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
7120: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
7130: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
7140: 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32  the native Win32
7150: 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a 20 20   LoadLibrary..  
7160: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
7170: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
7180: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
7190: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
71a0: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
71b0: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
71c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
71d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
71e0: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
71f0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7200: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
7210: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
7220: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
7230: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
7240: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
7250: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
7260: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
7270: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
7280: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
7290: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
72a0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
72b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
72c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
72d0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
72e0: 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23  t("kernel32",..#
72f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  else..      [Dll
7300: 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22  Import("coredll"
7310: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c  ,..#endif.. Call
7320: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
7330: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7340: 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72 53 65  n.Winapi, CharSe
7350: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
7360: 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ,..#if !PLATFORM
7370: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7380: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  K..          Bes
7390: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
73a0: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
73b0: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
73c0: 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e,..#endif..    
73d0: 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72        SetLastErr
73e0: 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20  or = true)]..   
73f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7400: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7410: 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73 74 72   LoadLibrary(str
7420: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ing fileName);..
7430: 0d 0a 20 20 20 20 20 20 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: 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
7490: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
74a0: 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
74b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
74c0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
74d0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
74e0: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
74f0: 74 69 76 65 20 57 69 6e 33 32 20 47 65 74 53 79  tive Win32 GetSy
7500: 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20  stemInfo..      
7510: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
7520: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
7530: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
7540: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
7550: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
7560: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
7570: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7580: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7590: 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22  ame="systemInfo"
75a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
75b0: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
75c0: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 20 74 6f  ion structure to
75d0: 20 62 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79   be filled in by
75e0: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a   the function...
75f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
7600: 6d 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  m>..      [DllIm
7610: 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20  port("coredll", 
7620: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7630: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7640: 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a  ntion.Winapi)]..
7650: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
7660: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
7670: 64 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28  d GetSystemInfo(
7680: 6f 75 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20  out SYSTEM_INFO 
7690: 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a  systemInfo);....
76a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
76f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
7700: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7710: 54 68 69 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e  This enumeration
7720: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 6f   contains the po
7730: 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f  ssible values fo
7740: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d  r the processor.
7750: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69  .      /// archi
7760: 74 65 63 74 75 72 65 20 66 69 65 6c 64 20 6f 66  tecture field of
7770: 20 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   the system info
7780: 72 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72  rmation structur
7790: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
77a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
77b0: 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72  internal enum Pr
77c0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
77d0: 75 72 65 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20  ure : ushort /* 
77e0: 43 4f 4d 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a  COMPAT: Win32. *
77f0: 2f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  /..      {..    
7800: 20 20 20 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c        Intel = 0,
7810: 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 49 50 53  ..          MIPS
7820: 20 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 1,..         
7830: 20 41 6c 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20   Alpha = 2,..   
7840: 20 20 20 20 20 20 20 50 6f 77 65 72 50 43 20 3d         PowerPC =
7850: 20 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53   3,..          S
7860: 48 78 20 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20  Hx = 4,..       
7870: 20 20 20 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20     ARM = 5,..   
7880: 20 20 20 20 20 20 20 49 41 36 34 20 3d 20 36 2c         IA64 = 6,
7890: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68  ..          Alph
78a0: 61 36 34 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20  a64 = 7,..      
78b0: 20 20 20 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20      MSIL = 8,.. 
78c0: 20 20 20 20 20 20 20 20 20 41 4d 44 36 34 20 3d           AMD64 =
78d0: 20 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49   9,..          I
78e0: 41 33 32 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31  A32_on_Win64 = 1
78f0: 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 55 6e  0,..          Un
7900: 6b 6e 6f 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a  known = 0xFFFF..
7910: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7920: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
7970: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7980: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
7990: 73 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69  structure contai
79a0: 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  ns information a
79b0: 62 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74  bout the current
79c0: 20 63 6f 6d 70 75 74 65 72 2e 20 54 68 69 73 0d   computer. This.
79d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75  .      /// inclu
79e0: 64 65 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f  des the processo
79f0: 72 20 74 79 70 65 2c 20 70 61 67 65 20 73 69 7a  r type, page siz
7a00: 65 2c 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73  e, memory addres
7a10: 73 65 73 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20  ses, etc...     
7a20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7a30: 0a 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61  .      [StructLa
7a40: 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
7a50: 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
7a60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
7a70: 75 63 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d  uct SYSTEM_INFO.
7a80: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
7a90: 20 20 20 20 70 75 62 6c 69 63 20 50 72 6f 63 65      public Proce
7aa0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
7ab0: 20 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69   wProcessorArchi
7ac0: 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20  tecture;..      
7ad0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
7ae0: 74 20 77 52 65 73 65 72 76 65 64 3b 20 2f 2a 20  t wReserved; /* 
7af0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7b00: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
7b10: 6e 74 20 64 77 50 61 67 65 53 69 7a 65 3b 20 2f  nt dwPageSize; /
7b20: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
7b30: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
7b40: 49 6e 74 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d  IntPtr lpMinimum
7b50: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
7b60: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
7b70: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
7b80: 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 61  blic IntPtr lpMa
7b90: 78 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e  ximumApplication
7ba0: 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20  Address; /* NOT 
7bb0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
7bc0: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
7bd0: 77 41 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72  wActiveProcessor
7be0: 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Mask; /* NOT USE
7bf0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
7c00: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 4e 75  public uint dwNu
7c10: 6d 62 65 72 4f 66 50 72 6f 63 65 73 73 6f 72 73  mberOfProcessors
7c20: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
7c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
7c40: 69 63 20 75 69 6e 74 20 64 77 50 72 6f 63 65 73  ic uint dwProces
7c50: 73 6f 72 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20  sorType; /* NOT 
7c60: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
7c70: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
7c80: 77 41 6c 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75  wAllocationGranu
7c90: 6c 61 72 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55  larity; /* NOT U
7ca0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
7cb0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
7cc0: 77 50 72 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b  wProcessorLevel;
7cd0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
7ce0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
7cf0: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
7d00: 73 6f 72 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20  sorRevision; /* 
7d10: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
7d20: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
7d30: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
7d40: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
7da0: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
7db0: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
7dc0: 20 43 6c 61 73 73 20 28 53 51 4c 69 74 65 29 0d   Class (SQLite).
7dd0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
7de0: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
7df0: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
7e00: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
7e10: 63 61 6c 6c 20 6e 61 74 69 76 65 20 53 51 4c 69  call native SQLi
7e20: 74 65 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20  te APIs...  /// 
7e30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
7e40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7e50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53  TFRAMEWORK..  [S
7e60: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
7e70: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
7e80: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
7e90: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
7ea0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7eb0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70  ds..  {..      p
7ec0: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
7ed0: 6e 67 20 45 78 63 65 70 74 69 6f 6e 4d 65 73 73  ng ExceptionMess
7ee0: 61 67 65 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20  ageFormat =..   
7ef0: 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
7f00: 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30  xception in \"{0
7f10: 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22  }\" method: {1}"
7f20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
7f80: 65 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74  egion Shared Nat
7f90: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
7fa0: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
7fb0: 6f 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69  ode..      #regi
7fc0: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
7fd0: 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ants..      /// 
7fe0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7ff0: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78   /// The file ex
8000: 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  tension used for
8010: 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
8020: 62 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  braries...      
8030: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8040: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8050: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
8060: 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65  ring DllFileExte
8070: 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d  nsion = ".dll";.
8080: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
8090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80d0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
80e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
80f0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65  // The file exte
8100: 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  nsion used for t
8110: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
8120: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
8130: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8140: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
8150: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
8160: 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c  string ConfigFil
8170: 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63  eExtension = ".c
8180: 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20  onfig";....     
8190: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
81a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
81e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
81f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8200: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
8210: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
8220: 74 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66  tion file specif
8230: 69 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ic to the..     
8240: 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61   /// System.Data
8250: 2e 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79  .SQLite assembly
8260: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
8270: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
8280: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
8290: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d  adonly string Xm
82a0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
82b0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79 70  =..          typ
82c0: 65 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65  eof(UnsafeNative
82d0: 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61  Methods).Namespa
82e0: 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65  ce + DllFileExte
82f0: 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20  nsion +..       
8300: 20 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74     ConfigFileExt
8310: 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20  ension;....     
8320: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
8370: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8380: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8390: 69 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  is the XML confi
83a0: 67 75 72 61 74 72 69 6f 6e 20 66 69 6c 65 20 74  guratrion file t
83b0: 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62  oken that will b
83c0: 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d  e replaced with.
83d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71  .      /// the q
83e0: 75 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f  ualified path to
83f0: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
8400: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 58 4d  ontaining the XM
8410: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  L configuration.
8420: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e  .      /// file.
8430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
8450: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
8460: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c  donly string Xml
8470: 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54  ConfigDirectoryT
8480: 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  oken =..        
8490: 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74    "%PreLoadSQLit
84a0: 65 5f 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63  e_XmlConfigDirec
84b0: 74 6f 72 79 25 22 3b 0d 0a 20 20 20 20 20 20 23  tory%";..      #
84c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
84d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
84e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8520: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
8530: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 20  ivate Constants 
8540: 28 44 65 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f  (Desktop Framewo
8550: 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50  rk Only)..#if !P
8560: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8570: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
8580: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8590: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
85a0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
85b0: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
85c0: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
85d0: 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20  laced with..    
85e0: 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66    /// the qualif
85f0: 69 65 64 20 70 61 74 68 20 74 6f 20 74 68 65 20  ied path to the 
8600: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
8610: 6e 69 6e 67 20 74 68 69 73 20 61 73 73 65 6d 62  ning this assemb
8620: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
8630: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8640: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
8650: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
8660: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
8670: 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20  yToken =..      
8680: 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c      "%PreLoadSQL
8690: 69 74 65 5f 41 73 73 65 6d 62 6c 79 44 69 72 65  ite_AssemblyDire
86a0: 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20  ctory%";....    
86b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
86c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
8700: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
8720: 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d   is the environm
8730: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
8740: 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20  en that will be 
8750: 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 61 6e  replaced with an
8760: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 62 62 72  ..      /// abbr
8770: 65 76 69 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  eviation of the 
8780: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
8790: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
87a0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
87b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73  ..      /// this
87c0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
87d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
87e0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
87f0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
8800: 73 74 72 69 6e 67 20 54 61 72 67 65 74 46 72 61  string TargetFra
8810: 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20  meworkToken =.. 
8820: 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f           "%PreLo
8830: 61 64 53 51 4c 69 74 65 5f 54 61 72 67 65 74 46  adSQLite_TargetF
8840: 72 61 6d 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e  ramework%";..#en
8850: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
8860: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
8870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
88c0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
88d0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
88e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
88f0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b     /// This lock
8900: 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74   is used to prot
8910: 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20 5f  ect the static _
8920: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
8930: 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  leFileName,..   
8940: 20 20 20 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61     /// _SQLiteNa
8950: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
8960: 2c 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 41  , and processorA
8970: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
8980: 6f 72 6d 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20  orms fields...  
8990: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
89a0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
89b0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
89c0: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
89d0: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
89e0: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
89f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
8a40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8a50: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8a60: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
8a70: 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62  s the mappings b
8a80: 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72  etween processor
8a90: 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
8aa0: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61       /// names a
8ab0: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  nd platform name
8ac0: 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e  s.  These mappin
8ad0: 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20  gs are now used 
8ae0: 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f  for two..      /
8af0: 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69  // purposes.  Fi
8b00: 72 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73  rst, they are us
8b10: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
8b20: 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  if the assembly 
8b30: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
8b40: 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75  base should be u
8b50: 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
8b60: 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73  he location, bas
8b70: 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20  ed upon whether 
8b80: 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  one..      /// o
8b90: 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61  r more of the na
8ba0: 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72  med sub-director
8bb0: 69 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e  ies exist within
8bc0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
8bd0: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
8be0: 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65  se.  Second, the
8bf0: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73  y are used to as
8c00: 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20  sist in loading 
8c10: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
8c20: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  .      /// SQLit
8c30: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
8c40: 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72  ly into the curr
8c50: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
8c60: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8c70: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
8c80: 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e  e static Diction
8c90: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
8ca0: 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ng> processorArc
8cb0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
8cc0: 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ms;....      ///
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d10: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
8d20: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8d30: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
8d40: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
8d50: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
8d60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
8d70: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
8d80: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
8d90: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
8da0: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
8db0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
8dc0: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
8dd0: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
8de0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8df0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
8e00: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
8e10: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
8e20: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
8e30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
8e80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8e90: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
8ea0: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
8eb0: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
8ec0: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
8ed0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
8ee0: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
8ef0: 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ory" /> method w
8f00: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
8f10: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
8f20: 2f 2f 20 73 75 69 74 61 62 6c 65 20 61 73 73 65  // suitable asse
8f30: 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 20  mbly directory. 
8f40: 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
8f50: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
8f60: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
8f70: 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
8f80: 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68 69 73   will check this
8f90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c  ..      /// fiel
8fa0: 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c  d and skips call
8fb0: 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20  s into the <see 
8fc0: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
8fd0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a  yDirectory" />..
8fe0: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
8ff0: 20 77 68 65 6e 65 76 65 72 20 69 74 20 69 73 20   whenever it is 
9000: 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  non-zero...     
9010: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9020: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9030: 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73  tatic bool noAss
9040: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
9050: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
90b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
90c0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 63  // This is the c
90d0: 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61 6c  ached return val
90e0: 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ue from the..   
90f0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
9100: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
9110: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
9120: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74  d -OR- null if t
9130: 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  hat method..    
9140: 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72 20    /// has never 
9150: 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69 64  returned a valid
9160: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
9170: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9180: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9190: 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68 65  tic string cache
91a0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
91b0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  me;....      ///
91c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9200: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9210: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9220: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73     /// When this
9230: 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65   field is non-ze
9240: 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65 73  ro, it indicates
9250: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
9260: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
9270: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
9280: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 6e   /> method was n
9290: 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74  ot able to locat
92a0: 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  e a..      /// s
92b0: 75 69 74 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66  uitable XML conf
92c0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
92d0: 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20 20 20 20  ame.  The..     
92e0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
92f0: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
9300: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
9310: 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b  ethod will check
9320: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   this..      ///
9330: 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73   field and skips
9340: 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20   calls into the 
9350: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
9360: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
9370: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d   />..      /// m
9380: 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69  ethod whenever i
9390: 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a  t is non-zero...
93a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
93b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
93c0: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
93d0: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
93e0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ame;..      #end
93f0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
9450: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9460: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f        /// For no
9470: 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73  w, this method s
9480: 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20  imply calls the 
9490: 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f  Initialize metho
94a0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
94b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
94c0: 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74  static UnsafeNat
94d0: 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20  iveMethods()..  
94e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
94f0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a   Initialize();..
9500: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9510: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
9560: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9570: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
9580: 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  pts to initializ
9590: 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79 20  e this class by 
95a0: 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20  pre-loading the 
95b0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
95c0: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
95d0: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
95e0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
95f0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
9600: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
9610: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9620: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
9630: 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61  atic void Initia
9640: 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lize()..      {.
9650: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
9660: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9670: 3a 20 43 68 65 63 6b 20 69 66 20 61 20 64 65 62  : Check if a deb
9680: 75 67 67 65 72 20 6e 65 65 64 73 20 74 6f 20 62  ugger needs to b
9690: 65 20 61 74 74 61 63 68 65 64 20 62 65 66 6f 72  e attached befor
96a0: 65 20 64 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20  e doing any..   
96b0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
96c0: 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20  real work...    
96d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
96e0: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
96f0: 73 2e 4d 61 79 62 65 42 72 65 61 6b 49 6e 74 6f  s.MaybeBreakInto
9700: 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23  Debugger();....#
9710: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
9720: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
9730: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
9740: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9750: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
9760: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
9770: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9780: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9790: 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c   If the "No_PreL
97a0: 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72  oadSQLite" envir
97b0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
97c0: 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20  is set (to..    
97d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
97e0: 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61  nything), skip a
97f0: 6c 6c 20 6f 66 20 6f 75 72 20 73 70 65 63 69 61  ll of our specia
9800: 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c  l code and simpl
9810: 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20  y return...     
9820: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9830: 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
9840: 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f  gValue("No_PreLo
9850: 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29  adSQLite", null)
9860: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
9870: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
9880: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
9890: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72  ....          #r
98a0: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
98b0: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
98c0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
98d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
98e0: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
98f0: 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74 69  ists of statisti
9900: 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e  cs that will con
9910: 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tain..          
9920: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 6f 75 73  //       various
9930: 20 63 6f 75 6e 74 73 20 75 73 65 64 20 69 6e 20   counts used in 
9940: 64 65 62 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75  debugging, inclu
9950: 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ding the..      
9960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d      //       num
9970: 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63  ber of times eac
9980: 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  h setting value 
9990: 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a  has been read...
99a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
99b0: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
99c0: 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d  a.Initialize();.
99d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
99e0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
99f0: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
9a00: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
9a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9a40: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
9a50: 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20 75  e this list is u
9a60: 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73 75  pdated if the su
9a70: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20  pported..       
9a80: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9a90: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9aa0: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
9ab0: 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  /or platform nam
9ac0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
9ad0: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67    //       chang
9ae0: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
9af0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9b00: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
9b10: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
9b20: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
9b30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9b40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9b50: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9b60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
9b70: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d  TE: Create the m
9b80: 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20  ap of processor 
9b90: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
9ba0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
9bb0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
9bc0: 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  o platform names
9bd0: 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e   using a case-in
9be0: 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67  sensitive string
9bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d      //       com
9c10: 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  parer...        
9c20: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c40: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
9c50: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
9c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c70: 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63 74          new Dict
9c80: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
9c90: 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20  tring>(..       
9ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cb0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65     StringCompare
9cc0: 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  r.OrdinalIgnoreC
9cd0: 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
9ce0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20   // NOTE: Setup 
9d10: 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74  the list of plat
9d20: 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63  form names assoc
9d30: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
9d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9d50: 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70 6f         the suppo
9d60: 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  rted processor a
9d70: 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20  rchitectures... 
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9da0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
9db0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
9dc0: 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c  forms.Add("x86",
9dd0: 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20   "Win32");..    
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
9df0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9e00: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
9e10: 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22 29  ("AMD64", "x64")
9e20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9e30: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
9e40: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
9e50: 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c 20  rms.Add("IA64", 
9e60: 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20  "Itanium");..   
9e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
9e80: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9e90: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
9ea0: 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43 45 22  d("ARM", "WinCE"
9eb0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9ec0: 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54    }....#if SQLIT
9ed0: 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
9ee0: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
9ef0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
9f00: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20  TFRAMEWORK..#if 
9f10: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
9f20: 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20  IBRARY..        
9f30: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9f40: 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55          // BUGBU
9f50: 47 3a 20 57 68 61 74 20 61 62 6f 75 74 20 6f 74  G: What about ot
9f60: 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  her application 
9f70: 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20  domains?..      
9f80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9f90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 53            if (_S
9fa0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
9fb0: 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  eHandle == IntPt
9fc0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
9fd0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9ff0: 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
a000: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
a010: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a020: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
a030: 69 74 65 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b  itecture = null;
a040: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a050: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
a060: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
a070: 20 20 20 20 20 20 20 53 65 61 72 63 68 46 6f 72         SearchFor
a080: 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
a090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0a0: 20 20 72 65 66 20 62 61 73 65 44 69 72 65 63 74    ref baseDirect
a0b0: 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65 73 73  ory, ref process
a0c0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
a0d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a0e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
a100: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
a110: 70 72 65 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c  pre-load the SQL
a120: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
a130: 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20   (or..          
a140: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a150: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
a160: 79 29 20 61 6e 64 20 73 74 6f 72 65 20 62 6f 74  y) and store bot
a170: 68 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d  h the file name.
a180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a190: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 64 20     //       and 
a1a0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
a1b0: 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65 72 20 75  ndle for later u
a1c0: 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  sage...         
a1d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a1f0: 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20  * IGNORED */..  
a200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a210: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
a220: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a230: 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
a240: 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f  ectory, processo
a250: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a  rArchitecture,..
a260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a270: 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74        ref _SQLit
a280: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  eNativeModuleFil
a290: 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
a2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a2b0: 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  f _SQLiteNativeM
a2c0: 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20  oduleHandle);.. 
a2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a2e0: 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
a2f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a300: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a370: 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73      /// Combines
a380: 20 74 77 6f 20 70 61 74 68 20 73 74 72 69 6e 67   two path string
a390: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
a3a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a3b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
a3c0: 22 70 61 74 68 31 22 3e 0d 0a 20 20 20 20 20 20  "path1">..      
a3d0: 2f 2f 2f 20 54 68 65 20 66 69 72 73 74 20 70 61  /// The first pa
a3e0: 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20  th -OR- null... 
a3f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
a400: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
a410: 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 32 22  ram name="path2"
a420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
a430: 20 73 65 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52   second path -OR
a440: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
a450: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
a460: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
a470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
a480: 63 6f 6d 62 69 6e 65 64 20 70 61 74 68 20 73 74  combined path st
a490: 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  ring -OR- null i
a4a0: 66 20 62 6f 74 68 20 6f 66 20 74 68 65 20 6f 72  f both of the or
a4b0: 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20  iginal path..   
a4c0: 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61     /// strings a
a4d0: 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  re null...      
a4e0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
a4f0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
a500: 61 74 69 63 20 73 74 72 69 6e 67 20 4d 61 79 62  atic string Mayb
a510: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
a520: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
a530: 70 61 74 68 31 2c 0d 0a 20 20 20 20 20 20 20 20  path1,..        
a540: 20 20 73 74 72 69 6e 67 20 70 61 74 68 32 0d 0a    string path2..
a550: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
a560: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a570: 69 66 20 28 70 61 74 68 31 20 21 3d 20 6e 75 6c  if (path1 != nul
a580: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
a590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
a5a0: 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c  f (path2 != null
a5b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a5c0: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
a5d0: 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68 31 2c 20  .Combine(path1, 
a5e0: 70 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20 20  path2);..       
a5f0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
a600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a610: 65 74 75 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20  eturn path1;..  
a620: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
a630: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
a640: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a650: 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32 20        if (path2 
a660: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
a670: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a680: 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20 20 20 20  rn path2;..     
a690: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6b0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
a6c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
a6d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a720: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
a730: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a740: 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68     /// Resets th
a750: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
a760: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
a770: 6e 61 6d 65 20 76 61 6c 75 65 2c 20 74 68 75 73  name value, thus
a780: 20 66 6f 72 63 69 6e 67 20 74 68 65 0d 0a 20 20   forcing the..  
a790: 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20 63 61 6c      /// next cal
a7a0: 6c 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22  l to <see cref="
a7b0: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
a7c0: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
a7d0: 65 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20  ethod to rely.. 
a7e0: 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68       /// upon th
a7f0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
a800: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
a810: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20  e" /> method to 
a820: 66 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20  fetch the..     
a830: 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e 66 69 67 75   /// XML configu
a840: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
a850: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
a870: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
a880: 69 64 20 52 65 73 65 74 43 61 63 68 65 64 58 6d  id ResetCachedXm
a890: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28  lConfigFileName(
a8a0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
a8b0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
a8c0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
a8d0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
a8e0: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
a8f0: 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
a900: 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65 73 65 74  nt("Method_Reset
a910: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
a920: 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64  ileName");..#end
a930: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
a940: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
a950: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
a960: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
a970: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a980: 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58 6d          cachedXm
a990: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
a9a0: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
a9b0: 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66         noXmlConf
a9c0: 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 61 6c  igFileName = fal
a9d0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
a9e0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
a9f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
aa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
aa40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
aa50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
aa60: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
aa70: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
aa80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
aa90: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 0d  le name for the.
aaa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d  .      /// assem
aab0: 62 6c 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  bly containing t
aac0: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
aad0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
aae0: 6d 70 6f 6e 65 6e 74 73 2c 20 69 66 0d 0a 20 20  mponents, if..  
aaf0: 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c      /// availabl
ab00: 65 2e 20 20 49 66 20 74 68 65 20 63 61 63 68 65  e.  If the cache
ab10: 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  d XML configurat
ab20: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76 61  ion file name va
ab30: 6c 75 65 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20  lue is not..    
ab40: 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2c    /// available,
ab50: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
ab60: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
ab70: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
ab80: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  will..      /// 
ab90: 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69  be used to obtai
aba0: 6e 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  n the XML config
abb0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
abc0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
abd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
abe0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
abf0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c       /// The XML
ac00: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
ac10: 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75  ile name -OR- nu
ac20: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
ac30: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20  be determined.. 
ac40: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73       /// or does
ac50: 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20   not exist...   
ac60: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
ac70: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
ac80: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
ac90: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
aca0: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
acb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
acc0: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
acd0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
ace0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
acf0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
ad00: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
ad10: 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 58 6d  thod_GetCachedXm
ad20: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
ad30: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
ad40: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
ad50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
ad60: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
ad70: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
ad80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad90: 69 66 20 28 63 61 63 68 65 64 58 6d 6c 43 6f 6e  if (cachedXmlCon
ada0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e  figFileName != n
adb0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
adc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
add0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
ade0: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
adf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 58           if (noX
ae00: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
ae10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ae20: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
ae30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
ae40: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
ae50: 72 6e 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  rn GetXmlConfigF
ae60: 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20  ileName();..    
ae70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aec0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
aed0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aee0: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
aef0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 58  nd returns the X
af00: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
af10: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
af20: 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20  he assembly..   
af30: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e     /// containin
af40: 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79  g the managed Sy
af50: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
af60: 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20   components...  
af70: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
af80: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
af90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
afa0: 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69  // The XML confi
afb0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
afc0: 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  me -OR- null if 
afd0: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
afe0: 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f  ermined..      /
aff0: 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65  // or does not e
b000: 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  xist...      ///
b010: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
b020: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b030: 63 20 73 74 72 69 6e 67 20 47 65 74 58 6d 6c 43  c string GetXmlC
b040: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d  onfigFileName().
b050: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
b060: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
b070: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
b080: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
b090: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
b0a0: 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74  rementOtherCount
b0b0: 28 22 4d 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43  ("Method_GetXmlC
b0c0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b  onfigFileName");
b0d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
b0e0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
b0f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
b100: 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20  ng directory;.. 
b110: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b120: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66  fileName;....#if
b130: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b140: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b150: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
b160: 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72   = AppDomain.Cur
b170: 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
b180: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
b190: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
b1a0: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
b1b0: 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43  (directory, XmlC
b1c0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d  onfigFileName);.
b1d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
b1e0: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  (File.Exists(fil
b1f0: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
b200: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b210: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
b220: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
b230: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
b250: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
b260: 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65  eName = fileName
b270: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b280: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
b290: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
b2a0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
b2b0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
b2c0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
b2d0: 20 3d 20 47 65 74 43 61 63 68 65 64 41 73 73 65   = GetCachedAsse
b2e0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
b2f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  ..          file
b300: 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62  Name = MaybeComb
b310: 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
b320: 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  y, XmlConfigFile
b330: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
b340: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
b350: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
b360: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b370: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
b380: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
b390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b3a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b3b0: 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f       cachedXmlCo
b3c0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66  nfigFileName = f
b3d0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
b3e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b3f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b400: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
b410: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b420: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
b430: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
b440: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b450: 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e          noXmlCon
b460: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 74 72  figFileName = tr
b470: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ue;..          }
b480: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
b490: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
b4a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b500: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b510: 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65       /// If nece
b520: 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73 20  ssary, replaces 
b530: 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58 4d  all supported XM
b540: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
b550: 66 69 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20  file tokens..   
b560: 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69     /// with thei
b570: 72 20 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c  r associated val
b580: 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ues...      /// 
b590: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b5a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
b5b0: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
b5c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
b5d0: 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e  e of the XML con
b5e0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
b5f0: 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20  being read...   
b600: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
b610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
b620: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
b630: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 65 74  .      /// A set
b640: 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61 64 20  ting value read 
b650: 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e  from the XML con
b660: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
b670: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
b680: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
b690: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
b6a0: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
b6b0: 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20  f the <paramref 
b6c0: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20  name="value" /> 
b6d0: 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74  will all support
b6e0: 65 64 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f  ed XML..      //
b6f0: 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  / configuration 
b700: 66 69 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c  file tokens repl
b710: 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e  aced.  No return
b720: 20 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76   value is reserv
b730: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ed..      /// to
b740: 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72   indicate an err
b750: 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64  or.  This method
b760: 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20   cannot fail... 
b770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
b780: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
b790: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
b7a0: 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69   ReplaceXmlConfi
b7b0: 67 46 69 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20  gFileTokens(..  
b7c0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
b7d0: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
b7e0: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
b7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
b800: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b810: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
b820: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75  NullOrEmpty(valu
b830: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
b840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b850: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
b860: 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
b870: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
b880: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b890: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b8c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b8d0: 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68  directory = Path
b8e0: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
b8f0: 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  e(fileName);....
b900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b910: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
b920: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
b930: 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20  directory))..   
b940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b970: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
b980: 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  place(..        
b990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9a0: 20 20 20 20 20 20 58 6d 6c 43 6f 6e 66 69 67 44        XmlConfigD
b9b0: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
b9c0: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
b9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
b9f0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
ba00: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
ba10: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
ba20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba30: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
ba40: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
ba50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
ba60: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
ba70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
ba90: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
baa0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
bab0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
bac0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bae0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
bb10: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
bb20: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
bb50: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
bb60: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
bb70: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb90: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
bba0: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
bbb0: 6f 20 72 65 70 6c 61 63 65 20 58 4d 4c 20 22 20  o replace XML " 
bbc0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
bbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbe0: 20 22 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20   "configuration 
bbf0: 66 69 6c 65 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b  file \"{0}\" tok
bc00: 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ens: {1}",..    
bc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc20: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
bc30: 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  me, e)); /* thro
bc40: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
bcb0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcd0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
bce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcf0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
bd00: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
bd10: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
bd20: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
bd30: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
bd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bd90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
bda0: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
bdb0: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
bdc0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
bdd0: 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e  specified settin
bde0: 67 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  g, using the..  
bdf0: 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
be00: 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  d XML configurat
be10: 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ion file...     
be20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
be30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
be40: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
be50: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
be60: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d  e name of the XM
be70: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
be80: 66 69 6c 65 20 74 6f 20 72 65 61 64 2e 0d 0a 20  file to read... 
be90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
bea0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
beb0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
bec0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
bed0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74  name of the sett
bee0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
bef0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
bf00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
bf10: 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20  "default">..    
bf20: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
bf30: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  to be returned i
bf40: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61  f the setting ha
bf50: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
bf60: 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20  xplicitly..     
bf70: 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62   /// or cannot b
bf80: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
bf90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
bfa0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
bfb0: 72 61 6d 20 6e 61 6d 65 3d 22 65 78 70 61 6e 64  ram name="expand
bfc0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ">..      /// No
bfd0: 6e 2d 7a 65 72 6f 20 74 6f 20 65 78 70 61 6e 64  n-zero to expand
bfe0: 20 61 6e 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   any environment
bff0: 20 76 61 72 69 61 62 6c 65 20 72 65 66 65 72 65   variable refere
c000: 6e 63 65 73 20 63 6f 6e 74 61 69 6e 65 64 20 69  nces contained i
c010: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  n..      /// the
c020: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 74   setting value t
c030: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20  o be returned.  
c040: 54 68 69 73 20 68 61 73 20 6e 6f 20 65 66 66 65  This has no effe
c050: 63 74 20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a  ct on the .NET..
c060: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 63        /// Compac
c070: 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
c080: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
c0a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
c0b0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
c0c0: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
c0d0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
c0e0: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
c0f0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
c100: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
c110: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
c120: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
c130: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
c140: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
c150: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
c160: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
c170: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
c180: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
c190: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61  tSettingValueVia
c1a0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a  XmlConfigFile(..
c1b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
c1c0: 20 66 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e   fileName, /* in
c1d0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
c1e0: 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20  tring name,     
c1f0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
c200: 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61      string @defa
c210: 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ult, /* in */.. 
c220: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78           bool ex
c230: 70 61 6e 64 20 20 20 20 20 20 2f 2a 20 69 6e 20  pand      /* in 
c240: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
c250: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
c260: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
c270: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c280: 20 20 20 20 69 66 20 28 28 66 69 6c 65 4e 61 6d      if ((fileNam
c290: 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e  e == null) || (n
c2a0: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ame == null)).. 
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2c0: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
c2d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c2e0: 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 64     XmlDocument d
c2f0: 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20 58 6d  ocument = new Xm
c300: 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a  lDocument();....
c310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f                do
c320: 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69 6c 65  cument.Load(file
c330: 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
c340: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
c350: 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65      XmlElement e
c360: 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e  lement = documen
c370: 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f  t.SelectSingleNo
c380: 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de(..           
c390: 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
c3a0: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
c3b0: 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  t(CultureInfo.In
c3c0: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
c3d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3e0: 20 20 20 22 2f 63 6f 6e 66 69 67 75 72 61 74 69     "/configurati
c3f0: 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67 73 2f 61  on/appSettings/a
c400: 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c  dd[@key='{0}']",
c410: 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20 20 20 20   name)) as..    
c420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
c430: 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a 20 74 68 72  lElement; /* thr
c440: 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
c450: 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65         if (eleme
c460: 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  nt != null)..   
c470: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c490: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e  string value = n
c4a0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
c4b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
c4c0: 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62 75  ement.HasAttribu
c4d0: 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20 20  te("value"))..  
c4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4f0: 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d      value = elem
c500: 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74 65  ent.GetAttribute
c510: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20  ("value");....  
c520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c530: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
c540: 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
c550: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c560: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
c570: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c580: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c5a0: 20 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20   (expand)..     
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5c0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
c5d0: 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45  ironment.ExpandE
c5e0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
c5f0: 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  les(value);.... 
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c610: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70       value = Rep
c620: 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  laceEnvironmentV
c630: 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61  ariableTokens(va
c640: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
c650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c660: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52         value = R
c670: 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46  eplaceXmlConfigF
c680: 69 6c 65 54 6f 6b 65 6e 73 28 66 69 6c 65 4e 61  ileTokens(fileNa
c690: 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  me, value);..   
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c6b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c6c0: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
c6d0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c710: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
c720: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
c730: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
c740: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
c750: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
c760: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
c770: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
c780: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
c790: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
c7a0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
c7b0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
c7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
c7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c7e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c7f0: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
c800: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
c810: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
c820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c830: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
c840: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
c850: 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
c860: 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
c870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
c880: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
c890: 64 20 74 6f 20 67 65 74 20 73 65 74 74 69 6e 67  d to get setting
c8a0: 20 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 20 22   \"{0}\" value "
c8b0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
c8c0: 20 20 20 20 20 20 20 20 20 20 22 66 72 6f 6d 20            "from 
c8d0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
c8e0: 6e 20 66 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20  n file \"{1}\": 
c8f0: 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20  {2}", name,..   
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c910: 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29     fileName, e))
c920: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
c950: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
c960: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c970: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
c980: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
c990: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
c9a0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
c9b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c9c0: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
c9d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
ca30: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ca40: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
ca50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ca60: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
ca70: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
ca80: 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  he target framew
ca90: 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
caa0: 6c 75 65 20 74 68 61 74 20 69 73 0d 0a 20 20 20  lue that is..   
cab0: 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
cac0: 64 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69  d with the speci
cad0: 66 69 65 64 20 6d 61 6e 61 67 65 64 20 61 73 73  fied managed ass
cae0: 65 6d 62 6c 79 2c 20 69 66 20 61 70 70 6c 69 63  embly, if applic
caf0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
cb00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
cb10: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
cb20: 6d 65 3d 22 61 73 73 65 6d 62 6c 79 22 3e 0d 0a  me="assembly">..
cb30: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
cb40: 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20 74  naged assembly t
cb50: 6f 20 72 65 61 64 20 74 68 65 20 74 61 72 67 65  o read the targe
cb60: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
cb70: 69 62 75 74 65 20 76 61 6c 75 65 0d 0a 20 20 20  ibute value..   
cb80: 20 20 20 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20     /// from...  
cb90: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
cba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
cbb0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
cbc0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
cbd0: 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f  e target framewo
cbe0: 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61 6c  rk attribute val
cbf0: 75 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ue for the speci
cc00: 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fied..      /// 
cc10: 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79  managed assembly
cc20: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
cc30: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
cc40: 6d 69 6e 65 64 2e 20 20 49 66 20 74 68 69 73 0d  mined.  If this.
cc50: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d  .      /// assem
cc60: 62 6c 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64  bly was compiled
cc70: 20 77 69 74 68 20 61 20 76 65 72 73 69 6f 6e 20   with a version 
cc80: 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d  of the .NET Fram
cc90: 65 77 6f 72 6b 20 70 72 69 6f 72 20 74 6f 0d 0a  ework prior to..
cca0: 20 20 20 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f        /// versio
ccb0: 6e 20 34 2e 30 2c 20 74 68 65 20 76 61 6c 75 65  n 4.0, the value
ccc0: 20 72 65 74 75 72 6e 65 64 20 4d 41 59 20 72 65   returned MAY re
ccd0: 66 6c 65 63 74 20 74 68 61 74 20 76 65 72 73 69  flect that versi
cce0: 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54 0d 0a  on of the .NET..
ccf0: 20 20 20 20 20 20 2f 2f 2f 20 46 72 61 6d 65 77        /// Framew
cd00: 6f 72 6b 20 69 6e 73 74 65 61 64 20 6f 66 20 74  ork instead of t
cd10: 68 65 20 6f 6e 65 20 61 73 73 6f 63 69 61 74 65  he one associate
cd20: 64 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69  d with the speci
cd30: 66 69 65 64 20 6d 61 6e 61 67 65 64 0d 0a 20 20  fied managed..  
cd40: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
cd50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
cd60: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
cd70: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
cd80: 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79  ring GetAssembly
cd90: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28  TargetFramework(
cda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73 65  ..          Asse
cdb0: 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 0d 0a 20  mbly assembly.. 
cdc0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
cdd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
cde0: 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e  f (assembly != n
cdf0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ce00: 7b 0d 0a 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c  {..#if NET_40 ||
ce10: 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34   NET_45 || NET_4
ce20: 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c  51 || NET_452 ||
ce30: 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34   NET_46 || NET_4
ce40: 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c  61 || NET_462 ||
ce50: 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34   NET_47 || NET_4
ce60: 37 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  71..            
ce70: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
ce80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ce90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
cea0: 73 65 6d 62 6c 79 2e 49 73 44 65 66 69 6e 65 64  sembly.IsDefined
ceb0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
ced0: 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d 65 77  eof(TargetFramew
cee0: 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66  orkAttribute), f
cef0: 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alse))..        
cf00: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf20: 20 20 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f     TargetFramewo
cf30: 72 6b 41 74 74 72 69 62 75 74 65 20 74 61 72 67  rkAttribute targ
cf40: 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20  etFramework =.. 
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf60: 20 20 20 20 20 20 20 20 20 28 54 61 72 67 65 74           (Target
cf70: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
cf80: 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te)..           
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
cfa0: 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f  ssembly.GetCusto
cfb0: 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20  mAttributes(..  
cfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
cfe0: 6f 66 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f  of(TargetFramewo
cff0: 72 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66 61  rkAttribute), fa
d000: 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  lse)[0];....    
d010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d020: 20 20 72 65 74 75 72 6e 20 74 61 72 67 65 74 46    return targetF
d030: 72 61 6d 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f  ramework.Framewo
d040: 72 6b 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  rkName;..       
d050: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
d060: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
d080: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
d090: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d0a0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
d0b0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
d0c0: 20 20 20 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45       }..#elif NE
d0d0: 54 5f 33 35 0d 0a 20 20 20 20 20 20 20 20 20 20  T_35..          
d0e0: 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54      return ".NET
d0f0: 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
d100: 6e 3d 76 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20  n=v3.5";..#elif 
d110: 4e 45 54 5f 32 30 0d 0a 20 20 20 20 20 20 20 20  NET_20..        
d120: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e        return ".N
d130: 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73  ETFramework,Vers
d140: 69 6f 6e 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64  ion=v2.0";..#end
d150: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
d160: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
d170: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
d180: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
d190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
d1e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d1f0: 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 73 20      /// Accepts 
d200: 61 20 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72  a long target fr
d210: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
d220: 65 20 76 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65  e value and make
d230: 73 20 69 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20  s it into a..   
d240: 20 20 20 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72     /// much shor
d250: 74 65 72 20 76 65 72 73 69 6f 6e 2c 20 73 75 69  ter version, sui
d260: 74 61 62 6c 65 20 66 6f 72 20 75 73 65 20 77 69  table for use wi
d270: 74 68 20 4e 75 47 65 74 20 70 61 63 6b 61 67 65  th NuGet package
d280: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
d290: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d2a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d2b0: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
d2c0: 2f 2f 2f 20 54 68 65 20 6c 6f 6e 67 20 74 61 72  /// The long tar
d2d0: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
d2e0: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 74 6f  tribute value to
d2f0: 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
d300: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
d310: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
d320: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
d330: 65 20 73 68 6f 72 74 20 74 61 72 67 65 74 20 66  e short target f
d340: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
d350: 74 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75  te value -OR- nu
d360: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 0d  ll if it cannot.
d370: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 64 65  .      /// be de
d380: 74 65 72 6d 69 6e 65 64 20 6f 72 20 63 6f 6e 76  termined or conv
d390: 65 72 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  erted...      //
d3a0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
d3b0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d3c0: 69 63 20 73 74 72 69 6e 67 20 41 62 62 72 65 76  ic string Abbrev
d3d0: 69 61 74 65 54 61 72 67 65 74 46 72 61 6d 65 77  iateTargetFramew
d3e0: 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ork(..          
d3f0: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
d400: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
d410: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
d420: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
d430: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
d440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d450: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  turn value;.... 
d460: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
d470: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 22   value.Replace("
d480: 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
d490: 72 73 69 6f 6e 3d 76 22 2c 20 22 6e 65 74 22 29  rsion=v", "net")
d4a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c  ;..          val
d4b0: 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
d4c0: 63 65 28 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45  ce(".", String.E
d4d0: 6d 70 74 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mpty);....      
d4e0: 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
d4f0: 76 61 6c 75 65 2e 49 6e 64 65 78 4f 66 28 27 2c  value.IndexOf(',
d500: 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
d510: 20 69 66 20 28 69 6e 64 65 78 20 21 3d 20 2d 31   if (index != -1
d520: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d530: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 53   value = value.S
d540: 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
d550: 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
d560: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
d570: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d580: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
d5d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d5e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  >..      /// If 
d5f0: 6e 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61  necessary, repla
d600: 63 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ces all supporte
d610: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  d environment va
d620: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20  riable tokens.. 
d630: 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
d640: 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 76  eir associated v
d650: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  alues...      //
d660: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d670: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d680: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
d690: 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e      /// A settin
d6a0: 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f  g value read fro
d6b0: 6d 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  m an environment
d6c0: 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20   variable...    
d6d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d6e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
d6f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
d700: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
d710: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
d720: 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61  value" /> will a
d730: 6c 6c 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20  ll supported..  
d740: 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d      /// environm
d750: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
d760: 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e  ens replaced.  N
d770: 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  o return value i
d780: 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20  s reserved..    
d790: 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74    /// to indicat
d7a0: 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69  e an error.  Thi
d7b0: 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20  s method cannot 
d7c0: 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  fail...      ///
d7d0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
d7e0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
d7f0: 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65  c string Replace
d800: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
d810: 62 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20  bleTokens(..    
d820: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
d830: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  ue..          ).
d840: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
d850: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
d860: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
d870: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
d880: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d890: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
d8a0: 72 79 20 3d 20 47 65 74 43 61 63 68 65 64 41 73  ry = GetCachedAs
d8b0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
d8c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d8d0: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
d8e0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
d8f0: 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
d900: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
d920: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
d930: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
d950: 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c  lue = value.Repl
d960: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
d990: 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72  yToken, director
d9a0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d9b0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
d9c0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
d9d0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
da00: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
da20: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
da30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
da40: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
da50: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
da60: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
da70: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
da80: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daa0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dac0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
dad0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
dae0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db00: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
db10: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
db20: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
db30: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db50: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
db60: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
db70: 6f 20 72 65 70 6c 61 63 65 20 61 73 73 65 6d 62  o replace assemb
db80: 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ly " +..        
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dba0: 20 20 20 20 20 20 22 64 69 72 65 63 74 6f 72 79        "directory
dbb0: 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29   token: {0}", e)
dbc0: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbe0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
dc00: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc30: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
dc40: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
dc60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
dc70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
dc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dca0: 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
dcb0: 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  y = null;....   
dcc0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
dce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dcf0: 20 20 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73     assembly = As
dd00: 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74  sembly.GetExecut
dd10: 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a  ingAssembly();..
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
dd30: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
dd40: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
dd50: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
dd60: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
dd70: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
dd90: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
dda0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
ddb0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
ddc0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
ddd0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddf0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
de00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
de30: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
de40: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
de50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de60: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
de70: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
de80: 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
de90: 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
dec0: 61 69 6c 65 64 20 74 6f 20 6f 62 74 61 69 6e 20  ailed to obtain 
ded0: 65 78 65 63 75 74 69 6e 67 20 22 20 2b 0d 0a 20  executing " +.. 
dee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
def0: 20 20 20 20 20 20 20 20 20 22 61 73 73 65 6d 62           "assemb
df00: 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
df10: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
df20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
df30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df40: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
df50: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df70: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
df80: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
df90: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
dfa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dfb0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
dfc0: 20 20 20 73 74 72 69 6e 67 20 74 61 72 67 65 74     string target
dfd0: 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41 62 62 72  Framework = Abbr
dfe0: 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61 6d  eviateTargetFram
dff0: 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20  ework(..        
e000: 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73 73            GetAss
e010: 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65  emblyTargetFrame
e020: 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79 29 29 3b  work(assembly));
e030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e040: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
e050: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72 67  NullOrEmpty(targ
e060: 65 74 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20  etFramework)).. 
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e090: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
e0a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e    value = value.
e0d0: 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20  Replace(..      
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0f0: 20 20 20 20 54 61 72 67 65 74 46 72 61 6d 65 77      TargetFramew
e100: 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72 67 65 74  orkToken, target
e110: 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20 20  Framework);..   
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e130: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e140: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
e150: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
e160: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
e170: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
e180: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
e190: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
e1a0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
e1b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1c0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
e1d0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
e1e0: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
e1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e200: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e230: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
e240: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
e250: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
e260: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
e270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e280: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
e290: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
e2a0: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
e2b0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2d0: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
e2e0: 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
e2f0: 65 20 74 61 72 67 65 74 20 22 20 2b 0d 0a 20 20  e target " +..  
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e310: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72 61              "fra
e320: 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30  mework token: {0
e330: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
e340: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
e350: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e370: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e390: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e3b0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
e3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3d0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e400: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e410: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
e420: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
e430: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
e440: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
e450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e4a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e4b0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
e4c0: 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f  urns the value o
e4d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
e4e0: 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74  setting, using t
e4f0: 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f  he XML..      //
e500: 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  / configuration 
e510: 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65 20  file and/or the 
e520: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
e530: 61 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63 75  ables for the cu
e540: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
e550: 20 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20   process and/or 
e560: 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74  the current syst
e570: 65 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62  em, when availab
e580: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
e590: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e5a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
e5b0: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
e5c0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
e5d0: 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  the setting...  
e5e0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
e5f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
e600: 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  am name="default
e610: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
e620: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
e630: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65  turned if the se
e640: 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65  tting has not be
e650: 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  en set explicitl
e660: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  y..      /// or 
e670: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
e680: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
e690: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
e6a0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
e6b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
e6c0: 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  lue of the setti
e6d0: 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61  ng -OR- the defa
e6e0: 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66  ult value specif
e6f0: 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  ied by..      //
e700: 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  / <paramref name
e710: 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66  ="default" /> if
e720: 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e   it has not been
e730: 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20   set explicitly 
e740: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  or..      /// ca
e750: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
e760: 65 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  ed.  By default,
e770: 20 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73 20   all references 
e780: 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20 20  to existing..   
e790: 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65     /// environme
e7a0: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 77 69 6c  nt variables wil
e7b0: 6c 20 62 65 20 65 78 70 61 6e 64 65 64 20 74 6f  l be expanded to
e7c0: 20 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e   their correspon
e7d0: 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20 20  ding values..   
e7e0: 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68     /// within th
e7f0: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
e800: 74 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65 69  turned unless ei
e810: 74 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70  ther the "No_Exp
e820: 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f  and" or..      /
e830: 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70  // "No_Expand_<p
e840: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61  aramref name="na
e850: 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d  me" />" environm
e860: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
e870: 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f  set [to..      /
e880: 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20  // anything]... 
e890: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
e8a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
e8b0: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
e8c0: 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  g GetSettingValu
e8d0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
e8e0: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a  ring name,    /*
e8f0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
e900: 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c    string @defaul
e910: 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  t /* in */..    
e920: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
e930: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e940: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e950: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e960: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
e970: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 61  E: If the specia
e980: 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53  l "No_SQLiteGetS
e990: 65 74 74 69 6e 67 56 61 6c 75 65 22 20 65 6e 76  ettingValue" env
e9a0: 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  ironment..      
e9b0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
e9c0: 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f  iable is set [to
e9d0: 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73   anything], this
e9e0: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c 77   method will alw
e9f0: 61 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ays..          /
ea00: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74  /       return t
ea10: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
ea20: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
ea30: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
ea40: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
ea50: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
ea60: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
ea70: 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65      "No_SQLiteGe
ea80: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 29 20  tSettingValue") 
ea90: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
eaa0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
eab0: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
eac0: 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ault;..         
ead0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
eae0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
eaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
eb30: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e  .          if (n
eb40: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
eb50: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
eb60: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a  rn @default;....
eb70: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
eb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ebc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  ...          #re
ebd0: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
ebe0: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
ebf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
ec00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
ec10: 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74 20  E: We are about 
ec20: 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69 6e  to read a settin
ec30: 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  g value from the
ec40: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
ec50: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
ec60: 20 6f 72 20 70 6f 73 73 69 62 6c 79 20 66 72 6f   or possibly fro
ec70: 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  m the XML config
ec80: 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72  uration file; cr
ec90: 65 61 74 65 20 6f 72 0d 0a 20 20 20 20 20 20 20  eate or..       
eca0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 63 72     //       incr
ecb0: 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70  ement the approp
ecc0: 72 69 61 74 65 20 73 74 61 74 69 73 74 69 63 20  riate statistic 
ecd0: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
ece0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  //..          De
ecf0: 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
ed00: 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  tSettingReadCoun
ed10: 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d  t(name, false);.
ed20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
ed30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
ed40: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
ed50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed60: 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  ....          bo
eda0: 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75 65  ol expand = true
edb0: 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20 45 6e 76  ; /* SHARED: Env
edc0: 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20 58  ironment -AND- X
edd0: 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e 20  ML config file. 
ede0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
ee40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ee50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
ee60: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
ee70: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
ee80: 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e       if (Environ
ee90: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
eea0: 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f  entVariable("No_
eeb0: 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c  Expand") != null
eec0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
eed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
eee0: 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  pand = false;.. 
eef0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ef00: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 45        else if (E
ef10: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
ef20: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
ef30: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
ef40: 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68        HelperMeth
ef50: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
ef60: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
ef70: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  ariantCulture,..
ef80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef90: 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d    "No_Expand_{0}
efa0: 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c  ", name)) != nul
efb0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
efc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
efd0: 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  xpand = false;..
efe0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
eff0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
f000: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74   Environment.Get
f010: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
f020: 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  ble(name);....  
f030: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
f040: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
f050: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
f060: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f070: 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64        if (expand
f080: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f090: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
f0a0: 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45  ironment.ExpandE
f0b0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
f0c0: 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  les(value);.... 
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
f0e0: 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69  ue = ReplaceEnvi
f0f0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54  ronmentVariableT
f100: 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 20  okens(value);.. 
f110: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
f120: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
f130: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
f140: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f150: 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20   value;....     
f160: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f170: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
f180: 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c  he "No_SQLiteXml
f190: 43 6f 6e 66 69 67 46 69 6c 65 22 20 65 6e 76 69  ConfigFile" envi
f1a0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
f1b0: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   is..          /
f1c0: 2f 20 20 20 20 20 20 20 73 65 74 20 5b 74 6f 20  /       set [to 
f1d0: 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20  anything], this 
f1e0: 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45  method will NEVE
f1f0: 52 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 0d  R read from the.
f200: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f210: 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72      XML configur
f220: 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20  ation file...   
f230: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f240: 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e       if (Environ
f250: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
f260: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
f280: 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69  o_SQLiteXmlConfi
f290: 67 46 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29  gFile") != null)
f2a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
f2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f2c0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
f2d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
f2e0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f330: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f340: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
f350: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
f360: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
f370: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
f380: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20  // NOTE: We are 
f390: 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20  about to read a 
f3a0: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72  setting value fr
f3b0: 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20  om the XML..    
f3c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
f3d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
f3e0: 65 3b 20 63 72 65 61 74 65 20 6f 72 20 69 6e 63  e; create or inc
f3f0: 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f  rement the appro
f400: 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20  priate..        
f410: 20 20 2f 2f 20 20 20 20 20 20 20 73 74 61 74 69    //       stati
f420: 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stic now...     
f430: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f440: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
f450: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
f460: 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75  dCount(name, tru
f470: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
f480: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
f490: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f4f0: 20 20 72 65 74 75 72 6e 20 47 65 74 53 65 74 74    return GetSett
f500: 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f  ingValueViaXmlCo
f510: 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20  nfigFile(..     
f520: 20 20 20 20 20 20 20 20 20 47 65 74 43 61 63 68           GetCach
f530: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f540: 61 6d 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65  ame(), name, @de
f550: 66 61 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d  fault, expand);.
f560: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
f570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
f5c0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f5d0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f5e0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
f5f0: 74 69 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54  tic string ListT
f600: 6f 53 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74  oString(IList<st
f610: 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20  ring> list)..   
f620: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f630: 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c  if (list == null
f640: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f650: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
f660: 0a 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e  .          Strin
f670: 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20  gBuilder result 
f680: 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c  = new StringBuil
f690: 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  der();....      
f6a0: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
f6b0: 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c  ing element in l
f6c0: 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ist)..          
f6d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f6e0: 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20   if (element == 
f6f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
f700: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
f710: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
f720: 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c      if (result.L
f730: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
f740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f750: 73 75 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29  sult.Append(' ')
f760: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f770: 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
f780: 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20  (element);..    
f790: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f7a0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
f7b0: 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  lt.ToString();..
f7c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f7d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
f820: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
f830: 69 63 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41  ic int CheckForA
f840: 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50  rchitecturesAndP
f850: 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20  latforms(..     
f860: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
f870: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
f880: 20 20 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e    ref List<strin
f890: 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20  g> matches..    
f8a0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
f8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
f8c0: 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20  result = 0;.... 
f8d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 74           if (mat
f8e0: 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ches == null).. 
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
f900: 63 68 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c  ches = new List<
f910: 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20  string>();....  
f920: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
f930: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
f940: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f950: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
f960: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
f970: 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 20 26  pty(directory) &
f980: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
f990: 20 20 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41       (processorA
f9a0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
f9b0: 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a  orms != null))..
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f9e0: 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56     foreach (KeyV
f9f0: 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c  aluePair<string,
fa00: 20 73 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20   string> pair.. 
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 70 72             in pr
fa30: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
fa40: 75 72 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20  urePlatforms).. 
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fa70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69            if (Di
fa80: 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d  rectory.Exists(M
fa90: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
faa0: 64 69 72 65 63 74 6f 72 79 2c 20 70 61 69 72 2e  directory, pair.
fab0: 4b 65 79 29 29 29 0d 0a 20 20 20 20 20 20 20 20  Key)))..        
fac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
fad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fae0: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
faf0: 65 73 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 29  es.Add(pair.Key)
fb00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
fb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
fb20: 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ult++;..        
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
fb40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
fb50: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
fb60: 76 61 6c 75 65 20 3d 20 70 61 69 72 2e 56 61 6c  value = pair.Val
fb70: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
fb90: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
fba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fbb0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
fbc0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
fbe0: 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73   (Directory.Exis
fbf0: 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  ts(MaybeCombineP
fc00: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 76  ath(directory, v
fc10: 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20  alue)))..       
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
fc30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63              matc
fc50: 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d  hes.Add(value);.
fc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc70: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
fc80: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcb0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
fcc0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
fcd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
fce0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
fcf0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
fd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
fd50: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
fd60: 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d   bool CheckAssem
fd70: 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20  blyCodeBase(..  
fd80: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
fd90: 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20   assembly,..    
fda0: 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
fdb0: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
fdc0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
fdd0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
fde0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
fdf0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
fe00: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
fe10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fe20: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
fe30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fe40: 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61     string codeBa
fe50: 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f  se = assembly.Co
fe60: 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20  deBase;....     
fe70: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
fe80: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
fe90: 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20  y(codeBase))..  
fea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
feb0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
fec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55  .              U
fed0: 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69  ri uri = new Uri
fee0: 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20  (codeBase);..   
fef0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
ff00: 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20  g localFileName 
ff10: 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b  = uri.LocalPath;
ff20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ff30: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
ff40: 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65  ts(localFileName
ff50: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ff60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
ff70: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
ff80: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
ff90: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
ffa0: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a  DirectoryName(..
ffb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffc0: 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29    localFileName)
ffd0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
ffe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
fff0: 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46  tring xmlConfigF
10000 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
10010 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
10020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
10030 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
10040 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
10050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
10060 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78  f (File.Exists(x
10070 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
10080 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
10090 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
100a0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
100b0 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
100c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
100d0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
100e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
100f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
10100 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
10110 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
10120 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
10130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10140 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
10150 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
10160 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
10170 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
10180 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
10190 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d  -loader found XM
101a0 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
101b0 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  file " +..      
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101d0 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
101e0 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
101f0 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
10200 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
10210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10220 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e            xmlCon
10230 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  figFileName)); /
10240 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
10250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10270 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
10280 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102a0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
102b0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
102c0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
102d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
102e0 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
102f0 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d   localFileName;.
10300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10310 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
10320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
10330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10340 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d    List<string> m
10350 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  atches = null;..
10360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10370 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68  if (CheckForArch
10380 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
10390 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c  forms(directory,
103a0 20 72 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20   ref matches) > 
103b0 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
103c0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
103d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
103e0 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
10400 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
10410 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
10430 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
10440 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
10450 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
10480 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
10490 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
104b0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
104c0 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61  -loader found na
104d0 74 69 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f  tive sub-directo
104e0 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20  ries " +..      
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10500 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
10510 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
10520 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
10530 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
10540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10550 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f            ListTo
10560 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29  String(matches))
10570 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10590 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
105a0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
105d0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
105e0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
105f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
10600 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
10610 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
10620 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  me = localFileNa
10630 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
10640 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
10650 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
10660 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10670 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
10680 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
10690 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
106a0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
106b0 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
106c0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
106d0 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
106e0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
106f0 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
10700 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
10710 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
10720 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
10730 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
10740 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
10750 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10760 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
10770 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
10780 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
10790 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
107b0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
107c0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
107d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107e0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
107f0 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
10800 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20  d to check code 
10810 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  base " +..      
10820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10830 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65  "for currently e
10840 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
10850 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  y: {0}", e)); /*
10860 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
10870 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10880 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
10890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
108a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
108b0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
108c0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
108d0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
108e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
108f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
10900 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
10910 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10960 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
10970 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10980 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 74      /// Resets t
10990 68 65 20 63 61 63 68 65 64 20 61 73 73 65 6d 62  he cached assemb
109a0 6c 79 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c  ly directory val
109b0 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69 6e 67  ue, thus forcing
109c0 20 74 68 65 20 6e 65 78 74 0d 0a 20 20 20 20 20   the next..     
109d0 20 2f 2f 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65   /// call to <se
109e0 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
109f0 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
10a00 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f  ry" /> method to
10a10 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   rely..      ///
10a20 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65 20 63   upon the <see c
10a30 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79  ref="GetAssembly
10a40 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
10a50 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20 74 68  thod to fetch th
10a60 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  e..      /// ass
10a70 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e  embly directory.
10a80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
10a90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
10aa0 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
10ab0 64 20 52 65 73 65 74 43 61 63 68 65 64 41 73 73  d ResetCachedAss
10ac0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
10ad0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
10ae0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
10af0 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
10b00 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
10b10 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
10b20 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
10b30 74 28 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43  t("Method_ResetC
10b40 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
10b50 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
10b60 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
10b70 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
10b80 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
10b90 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
10ba0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10bb0 20 20 20 20 20 20 20 63 61 63 68 65 64 41 73 73         cachedAss
10bc0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
10bd0 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
10be0 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
10bf0 44 69 72 65 63 74 6f 72 79 20 3d 20 66 61 6c 73  Directory = fals
10c00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
10c10 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
10c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
10c70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10c80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
10c90 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
10ca0 74 68 65 20 63 61 63 68 65 64 20 64 69 72 65 63  the cached direc
10cb0 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73  tory for the ass
10cc0 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 0d  embly currently.
10cd0 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67  .      /// being
10ce0 20 65 78 65 63 75 74 65 64 2c 20 69 66 20 61 76   executed, if av
10cf0 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74 68 65  ailable.  If the
10d00 20 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79   cached assembly
10d10 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65   directory value
10d20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e  ..      /// is n
10d30 6f 74 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68  ot available, th
10d40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
10d50 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
10d60 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  y" /> method wil
10d70 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  l..      /// be 
10d80 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74  used to obtain t
10d90 68 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65  he assembly dire
10da0 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ctory...      //
10db0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10dc0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
10dd0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10de0 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
10df0 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
10e00 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63  ently being exec
10e10 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  uted -OR- null i
10e20 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  f..      /// it 
10e30 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10e40 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
10e50 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
10e60 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10e70 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63 68  c string GetCach
10e80 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
10e90 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
10ea0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
10eb0 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
10ec0 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
10ed0 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
10ee0 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
10ef0 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47  rCount("Method_G
10f00 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
10f10 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65  Directory");..#e
10f20 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
10f30 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
10f40 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
10f50 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
10f60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10f70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
10f80 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
10f90 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
10fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fb0 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64 41    return cachedA
10fc0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
10fd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10fe0 20 20 20 69 66 20 28 6e 6f 41 73 73 65 6d 62 6c     if (noAssembl
10ff0 79 44 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20  yDirectory)..   
11000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11010 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
11020 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11030 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
11040 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11050 79 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  y();..      }...
11060 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
110c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
110d0 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
110e0 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f  urns the directo
110f0 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
11100 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
11110 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
11120 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20  xecuted...      
11130 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11140 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
11150 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
11160 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  he directory for
11170 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
11180 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
11190 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c  ecuted -OR- null
111a0 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   if..      /// i
111b0 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
111c0 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
111d0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
111e0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
111f0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73  tic string GetAs
11200 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
11210 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
11220 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
11230 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
11240 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
11250 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
11260 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
11270 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 41 73  nt("Method_GetAs
11280 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
11290 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
112a0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
112b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72  ....          tr
112c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
112d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
112e0 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20  sembly assembly 
112f0 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78  = Assembly.GetEx
11300 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28  ecutingAssembly(
11310 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11320 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
11330 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11340 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
11360 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
11370 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
11380 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113a0 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
113b0 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
113d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
113e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
113f0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
11400 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
11410 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
11420 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
11430 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
11440 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11450 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
11460 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62  emblyName assemb
11470 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  lyName = assembl
11480 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a  y.GetName();....
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
114a0 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d   (assemblyName =
114b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
114c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
114d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
114e0 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
114f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11500 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
11520 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11530 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
11540 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11560 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11580 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
11590 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73     fileName = as
115a0 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42  semblyName.CodeB
115b0 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ase;..#else..   
115c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
115d0 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64  CheckAssemblyCod
115e0 65 42 61 73 65 28 61 73 73 65 6d 62 6c 79 2c 20  eBase(assembly, 
115f0 72 65 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  ref fileName))..
11600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11610 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73    fileName = ass
11620 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d  embly.Location;.
11630 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
11640 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
11650 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
11660 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  y(fileName))..  
11670 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11690 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
116a0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
116b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
116c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116d0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
116e0 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11700 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
11710 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11720 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
11730 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11740 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
11750 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e  irectory = Path.
11760 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65  GetDirectoryName
11770 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11790 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
117a0 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29  Empty(directory)
117b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
117c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
117d0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
117e0 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11810 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
11820 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
11830 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
11840 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11860 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
11870 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11880 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
11890 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
118a0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
118b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
118c0 20 20 20 20 20 20 20 63 61 63 68 65 64 41 73 73         cachedAss
118d0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
118e0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
118f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
11900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11910 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
11920 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
11930 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
11940 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
11950 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
11960 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
11970 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
11980 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
11990 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
119a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
119b0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
119c0 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
119e0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
119f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11a00 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
11a10 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
11a20 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
11a30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11a40 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
11a50 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
11a60 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
11a70 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
11a80 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
11a90 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
11aa0 20 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22   get directory "
11ab0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
11ac0 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63            "for c
11ad0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
11ae0 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d  ng assembly: {0}
11af0 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
11b00 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
11b10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11b20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11b30 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11b50 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
11b60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
11b70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
11b80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
11b90 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
11ba0 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
11bb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11bc0 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65    noAssemblyDire
11bd0 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20  ctory = true;.. 
11be0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
11bf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
11c00 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ull;..      }.. 
11c10 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
11c20 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
11c80 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74  ion Optional Nat
11c90 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
11ca0 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
11cb0 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  ode..      //.. 
11cc0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
11cd0 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20   we are looking 
11ce0 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61 72 64  for the standard
11cf0 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22 73 71   SQLite DLL ("sq
11d00 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20  lite3.dll"),..  
11d10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
11d20 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22 53   interop DLL ("S
11d30 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c  QLite.Interop.dl
11d40 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65 20 72  l"), or we are r
11d50 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20  unning on the.. 
11d60 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e       //       .N
11d70 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
11d80 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20  work, we should 
11d90 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63 6f 64  include this cod
11da0 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a  e (only if the..
11db0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66        //       f
11dc0 65 61 74 75 72 65 20 68 61 73 20 61 63 74 75 61  eature has actua
11dd0 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  lly been enabled
11de0 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20 77 6f  ).  This code wo
11df0 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a  uld be totally..
11e00 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
11e10 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68 69 73  edundant if this
11e20 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65 65 6e   module has been
11e30 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68   bundled into th
11e40 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20  e mixed-mode..  
11e50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
11e60 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  embly...      //
11e70 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
11e80 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
11e90 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
11ea0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11eb0 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f  EWORK....      /
11ec0 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
11ed0 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69  : Only compile i
11ee0 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  n the native lib
11ef0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f  rary pre-load co
11f00 64 65 20 69 66 20 74 68 65 20 66 65 61 74 75 72  de if the featur
11f10 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
11f20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61 62 6c    has been enabl
11f30 65 64 20 66 6f 72 20 74 68 69 73 20 62 75 69 6c  ed for this buil
11f40 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  d...      //..#i
11f50 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
11f60 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
11f70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11f80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
11f90 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72 6f 6e  e of the environ
11fa0 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 63 6f  ment variable co
11fb0 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72 6f  ntaining the pro
11fc0 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
11fd0 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  / architecture o
11fe0 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
11ff0 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
12000 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12010 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
12020 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69  ic readonly stri
12030 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43  ng PROCESSOR_ARC
12040 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20 20 20  HITECTURE =..   
12050 20 20 20 20 20 20 20 22 50 52 4f 43 45 53 53 4f         "PROCESSO
12060 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 22 3b  R_ARCHITECTURE";
12070 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
120d0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
120e0 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
120f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
12100 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
12110 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ule file name fo
12120 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
12130 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 6e  ite library or n
12140 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
12150 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12160 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12170 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65  c string _SQLite
12180 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  NativeModuleFile
12190 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
121a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
121f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
12200 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
12210 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
12220 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65  e handle for the
12230 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
12240 69 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61  ibrary or the va
12250 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  lue..      /// I
12260 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20  ntPtr.Zero...   
12270 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12280 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
12290 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f   static IntPtr _
122a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
122b0 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74  leHandle = IntPt
122c0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23  r.Zero;..      #
122d0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
122e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
122f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
12330 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12340 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
12350 65 72 6d 69 6e 65 73 20 74 68 65 20 62 61 73 65  ermines the base
12360 20 66 69 6c 65 20 6e 61 6d 65 20 28 77 69 74 68   file name (with
12370 6f 75 74 20 61 6e 79 20 64 69 72 65 63 74 6f 72  out any director
12380 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a  y information)..
12390 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
123a0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
123b0 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72  library to be pr
123c0 65 2d 6c 6f 61 64 65 64 20 62 79 20 74 68 69 73  e-loaded by this
123d0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
123e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
123f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
12400 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
12410 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
12420 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
12430 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
12440 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
12450 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  by..      /// th
12460 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75  is class -OR- nu
12470 6c 6c 20 69 66 20 69 74 73 20 76 61 6c 75 65 20  ll if its value 
12480 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
12490 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
124a0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
124b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
124c0 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 61 74  ic string GetNat
124d0 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  iveLibraryFileNa
124e0 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  meOnly()..      
124f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
12500 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
12510 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
12520 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
12530 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
12540 65 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  e_LibraryFileNam
12550 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  eOnly", null);..
12560 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
12570 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20  fileNameOnly != 
12580 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12590 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
125a0 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20  NameOnly;....   
125b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
125c0 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d  LITE_DLL; /* COM
125d0 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  PAT */..      }.
125e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
125f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12630 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
12640 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
12650 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72 20  // Searches for 
12660 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
12670 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65  e library in the
12680 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
12690 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  ining..      ///
126a0 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
126b0 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
126c0 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61  ecuted as well a
126d0 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
126e0 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tory..      /// 
126f0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
12700 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
12710 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
12720 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12730 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12740 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22  ="baseDirectory"
12750 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  >..      /// Upo
12760 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
12770 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
12780 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65  e modified to re
12790 66 65 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d  fer to the base.
127a0 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
127b0 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
127c0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
127d0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
127e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
127f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
12800 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
12810 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
12820 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
12830 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
12840 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
12850 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
12860 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20   to the name..  
12870 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69      /// of the i
12880 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63 74 6f  mmediate directo
12890 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66  ry (i.e. the off
128a0 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
128b0 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20  e directory)..  
128c0 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69      /// containi
128d0 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
128e0 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
128f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
12900 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
12910 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
12920 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63  / Non-zero (succ
12930 65 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69  ess) if the nati
12940 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
12950 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68  y was found; oth
12960 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
12970 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65  // zero (failure
12980 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  )...      /// </
12990 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
129a0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
129b0 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72  ool SearchForDir
129c0 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
129d0 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61     ref string ba
129e0 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
129f0 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
12a00 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
12a10 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
12a20 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74  hitecture /* out
12a30 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
12a40 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
12a50 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74       if (GetSett
12a60 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
12a70 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
12a80 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72  oadSQLite_NoSear
12a90 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c  chForDirectory",
12aa0 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
12ab0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12ad0 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53  rn false; /* DIS
12ae0 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  ABLED */..      
12af0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12b00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12b10 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d   // NOTE: Determ
12b20 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69 6c  ine the base fil
12b30 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
12b40 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
12b50 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  rary...         
12b60 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 69   //       If thi
12b70 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62  s is not known b
12b80 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65  y this class, we
12b90 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65   cannot continue
12ba0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
12bb0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
12bc0 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d  g fileNameOnly =
12bd0 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
12be0 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b  yFileNameOnly();
12bf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
12c00 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d   (fileNameOnly =
12c10 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12c20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12c30 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
12c40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12c50 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
12c60 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20  he list of base 
12c70 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20  directories and 
12c80 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f  processor/platfo
12c90 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  rm..          //
12ca0 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54         names.  T
12cb0 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20  hese lists will 
12cc0 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  be used to help 
12cd0 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74 69 76  locate the nativ
12ce0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
12cf0 20 20 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72        SQLite cor
12d00 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e  e library (or in
12d10 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
12d20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f  to pre-load into
12d30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
12d40 20 20 20 20 20 74 68 69 73 20 70 72 6f 63 65 73       this proces
12d50 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  s...          //
12d60 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
12d70 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73  ng[] directories
12d80 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
12d90 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44      GetAssemblyD
12da0 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66  irectory(),..#if
12db0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12dc0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12dd0 20 20 20 20 20 20 20 20 20 20 20 41 70 70 44 6f             AppDo
12de0 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
12df0 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
12e00 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
12e10 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20       };....     
12e20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75       string[] su
12e30 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b  bDirectories = {
12e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e50 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
12e60 69 74 65 63 74 75 72 65 28 29 2c 20 47 65 74 50  itecture(), GetP
12e70 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c  latformName(null
12e80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  )..          };.
12e90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
12ea0 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
12eb0 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
12ec0 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
12ed0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12ee0 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
12ef0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12f00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
12f10 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
12f20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
12f30 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
12f40 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
12f50 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
12f60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12f70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12f80 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
12f90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
12fb0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
12fc0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
12fd0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
12fe0 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
12ff0 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
13000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13010 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
13020 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
13030 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
13040 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
13050 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
13060 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
13070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13080 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13090 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
130a0 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
130b0 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
130c0 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
130d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130e0 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
130f0 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
13100 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
13110 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
13120 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
13130 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
13140 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
13150 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
13160 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
13170 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
13180 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
13190 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
131a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
131b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
131c0 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
131d0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
131e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
131f0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
13200 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
13210 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
13220 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13240 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13260 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
13270 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
13280 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
13290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
132b0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
132c0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
132d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132e0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
132f0 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
13300 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
13310 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
13320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13330 20 20 20 20 20 20 20 20 20 22 6e 61 6d 65 20 5c           "name \
13340 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e  "{0}\", returnin
13350 67 20 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31  g directory \"{1
13360 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20  }\" and " +..   
13370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13380 20 20 20 20 20 20 20 20 20 20 20 22 73 75 62 2d             "sub-
13390 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c  directory \"{2}\
133a0 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c  "...", fileName,
133b0 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
133c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133d0 20 20 20 20 20 20 20 20 20 20 20 73 75 62 44 69             subDi
133e0 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68  rectory)); /* th
133f0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13420 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
13430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13440 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13460 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
13470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13480 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
13490 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
134a0 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
134b0 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
134c0 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
134d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
134e0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
134f0 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
13500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13510 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13520 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a  true; /* FOUND *
13530 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13540 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13550 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13560 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13570 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
13580 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d  /* NOT FOUND */.
13590 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
135a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
135b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
135f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
13610 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
13620 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
13630 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
13640 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
13650 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
13660 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13670 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13680 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
13690 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
136a0 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
136b0 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
136c0 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
136d0 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
136e0 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
136f0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
13700 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
13710 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
13720 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
13730 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
13740 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
13750 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13760 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
13770 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
13780 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
13790 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
137a0 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
137b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
137c0 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
137d0 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
137e0 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
137f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13800 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
13810 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74  ectory = GetSett
13820 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61  ingValue("PreLoa
13830 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
13840 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20  ctory",..       
13850 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d         null);...
13860 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64  .          if (d
13870 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
13880 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13890 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
138a0 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  y;....#if !PLATF
138b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
138c0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
138d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
138e0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
138f0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
13900 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
13910 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  y" environment..
13920 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13930 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
13940 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29  et (to anything)
13950 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74  , then attempt t
13960 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  o use the..     
13970 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69       //       di
13980 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
13990 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  ng the currently
139a0 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
139b0 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  bly..          /
139c0 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79  /       (i.e. Sy
139d0 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
139e0 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65  ) intsead of the
139f0 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
13a00 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
13a10 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72   domain base dir
13a20 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20  ectory...       
13a30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13a40 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
13a50 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
13a60 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
13a70 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d  dSQLite_UseAssem
13a80 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  blyDirectory", n
13a90 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
13aa0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13ab0 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
13ac0 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c  ory = GetAssembl
13ad0 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  yDirectory();...
13ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
13af0 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20  f (directory != 
13b00 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13b20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
13b30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13b40 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13b50 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
13b60 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
13b70 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73  on using the bas
13b80 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
13b90 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
13ba0 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61         current a
13bb0 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
13bc0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
13bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
13be0 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72  rn AppDomain.Cur
13bf0 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
13c00 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65  irectory;..#else
13c10 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
13c20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
13c30 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
13c40 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
13c50 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
13c60 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
13c70 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
13c80 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
13c90 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  ting assembly...
13ca0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13cb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
13cc0 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
13cd0 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory();..#endif..
13ce0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13cf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
13d40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13d50 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
13d60 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e  mines if the dyn
13d70 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
13d80 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75  y file name requ
13d90 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20  ires a suffix.. 
13da0 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64       /// and add
13db0 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72  s it if necessar
13dc0 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
13dd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13de0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
13df0 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
13e00 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
13e10 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  nal dynamic link
13e20 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
13e30 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  me to inspect...
13e40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
13e50 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
13e60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
13e70 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c  // The dynamic l
13e80 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
13e90 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20   name, possibly 
13ea0 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c  modified to incl
13eb0 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f  ude an..      //
13ec0 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20  / extension...  
13ed0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
13ee0 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
13ef0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
13f00 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
13f10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
13f20 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20  ing fileName /* 
13f30 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
13f40 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
13f50 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
13f60 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
13f70 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
13f80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13f90 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70          if (Help
13fa0 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
13fb0 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
13fc0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13fd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
13fe0 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74  fileName.EndsWit
13ff0 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  h(DllFileExtensi
14000 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
14010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
14020 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
14030 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
14040 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
14050 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14070 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20  return fileName 
14080 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
14090 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
140a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
140b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
140c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
140d0 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
140e0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ame;..      }...
140f0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
14100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14140 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
14150 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14160 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
14170 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73  urns the process
14180 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
14190 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  of the current..
141a0 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
141b0 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
141c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
141d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
141e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
141f0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
14200 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
14210 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20  nt process -OR- 
14220 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
14230 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
14240 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
14250 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
14260 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
14270 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
14280 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
14290 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20  tecture()..     
142a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
142b0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
142c0 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
142d0 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
142e0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
142f0 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
14300 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
14310 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
14320 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
14330 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  im for the curre
14340 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  nt processor..  
14350 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
14360 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
14370 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14380 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
14390 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
143a0 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
143b0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
143c0 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
143d0 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41  QLite_ProcessorA
143e0 72 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75  rchitecture", nu
143f0 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
14400 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
14410 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e  rchitecture != n
14420 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14430 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
14440 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
14450 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
14460 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
14470 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69  BUGBUG: Will thi
14480 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69  s always be reli
14490 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20  able?..         
144a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   //..          p
144b0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
144c0 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
144d0 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52  gValue(PROCESSOR
144e0 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e  _ARCHITECTURE, n
144f0 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
14500 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14540 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
14550 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14560 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14570 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14580 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65      // HACK: Che
14590 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73  ck for an "impos
145a0 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e  sible" situation
145b0 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65  .  If the pointe
145c0 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  r size..        
145d0 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32    //       is 32
145e0 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65  -bits, the proce
145f0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14600 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44  e cannot be "AMD
14610 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  64"...          
14620 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74  //       In that
14630 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c   case, we are al
14640 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68  most certainly h
14650 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20  itting a bug in 
14660 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
14670 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
14680 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20  g system and/or 
14690 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
146a0 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20  at causes the.. 
146b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
146c0 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48    PROCESSOR_ARCH
146d0 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e  ITECTURE environ
146e0 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
146f0 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
14700 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
14710 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20   wrong value in 
14720 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63  some circumstanc
14730 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65  es.  Please refe
14740 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20  r to ticket..   
14750 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14760 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72  [9ac9862611] for
14770 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
14780 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
14790 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
147a0 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  f ((IntPtr.Size 
147b0 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20  == sizeof(int)) 
147c0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
147d0 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28    String.Equals(
147e0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
147f0 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d  cture, "AMD64",.
14800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14810 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
14820 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
14830 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
14840 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
14850 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
14860 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
14870 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14890 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63   NOTE: When trac
148a0 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ing is enabled, 
148b0 73 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61  save the origina
148c0 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20  lly detected..  
148d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
148e0 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
148f0 72 63 68 69 74 65 63 74 75 72 65 20 62 65 66 6f  rchitecture befo
14900 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d  re changing it..
14910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14920 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14930 20 73 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f   string savedPro
14940 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
14950 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72  re = processorAr
14960 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e  chitecture;..#en
14970 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
14980 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14990 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
149a0 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65  We know that ope
149b0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74  rating systems t
149c0 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36  hat return "AMD6
149d0 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  4" as..         
149e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
149f0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
14a00 69 74 65 63 74 75 72 65 20 61 72 65 20 61 63 74  itecture are act
14a10 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74  ually a superset
14a20 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20   of..           
14a30 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
14a40 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20  "x86" processor 
14a50 61 72 63 68 69 74 65 63 74 75 72 65 3b 20 74 68  architecture; th
14a60 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d  erefore, return.
14a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14a80 2f 20 20 20 20 20 20 20 22 78 38 36 22 20 77 68  /       "x86" wh
14a90 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  en the pointer s
14aa0 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d  ize is 32-bits..
14ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14ac0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14ad0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
14ae0 65 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d  ecture = "x86";.
14af0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
14b00 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
14b10 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
14b20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
14b30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
14b60 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
14b70 53 68 6f 77 20 74 68 61 74 20 77 65 20 68 69 74  Show that we hit
14b80 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61   a fairly unusua
14b90 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65  l situation (i.e
14ba0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14bb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
14bc0 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73  e "wrong" proces
14bd0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
14be0 20 77 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d   was detected)..
14bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14c00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14c10 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
14c20 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
14c30 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
14c40 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
14c50 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
14c60 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
14c70 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
14c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
14c90 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
14ca0 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74  re-loader detect
14cb0 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74  ed {0}-bit point
14cc0 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  er " +..        
14cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73                "s
14ce0 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65 73 73  ize with process
14cf0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
14d00 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22  \"{1}\", using "
14d10 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
14d20 20 20 20 20 20 20 20 20 20 20 22 70 72 6f 63 65            "proce
14d30 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14d40 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61  e \"{2}\" instea
14d50 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  d...",..        
14d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
14d70 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a  tPtr.Size * 8 /*
14d80 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50   bits */, savedP
14d90 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
14da0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
14db0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
14dc0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
14dd0 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  re)); /* throw *
14de0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14df0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14e00 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
14e10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14e20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
14e30 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
14e40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
14e50 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
14e60 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
14e70 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
14e80 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
14e90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14ea0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14eb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14ec0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
14ed0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
14ee0 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65   Framework, atte
14ef0 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 6e  mpt to use the n
14f00 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
14f10 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
14f20 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
14f30 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
14f40 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
14f50 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   us..           
14f60 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69 74 68     //       with
14f70 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
14f80 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
14f90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
14fb0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
14fc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14fd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14fe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
14ff0 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75 74 20  OTE: The output 
15000 6f 66 20 74 68 65 20 47 65 74 53 79 73 74 65 6d  of the GetSystem
15010 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69  Info function wi
15020 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 20  ll be..         
15030 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
15040 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e 20 20    placed here.  
15050 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65 73 73  Only the process
15060 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
15070 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20  field..         
15080 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
15090 20 20 69 73 20 75 73 65 64 20 62 79 20 74 68 69    is used by thi
150a0 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
150b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
150c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
150d0 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
150e0 65 74 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54  ethodsWin32.SYST
150f0 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e  EM_INFO systemIn
15100 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  fo;....         
15110 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15130 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68  / NOTE: Query th
15140 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
15150 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b  tion via P/Invok
15160 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20  e, thus..       
15170 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15180 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20      filling the 
15190 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
151b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151c0 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
151d0 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74  MethodsWin32.Get
151e0 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73  SystemInfo(out s
151f0 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
15200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15210 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15220 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
15230 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65  Return the proce
15240 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
15250 65 20 76 61 6c 75 65 20 61 73 20 61 20 73 74 72  e value as a str
15260 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
15270 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
15280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
15290 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
152a0 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ure =..         
152b0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73               sys
152c0 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73  temInfo.wProcess
152d0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2e 54  orArchitecture.T
152e0 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
152f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
15300 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
15310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15320 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15330 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
15340 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
15350 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15360 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15370 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
15380 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72   Upon failure, r
15390 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73  eturn an empty s
153a0 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c  tring.  This wil
153b0 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20  l prevent..     
153c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
153d0 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65    the calling me
153e0 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64  thod from consid
153f0 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  ering this metho
15400 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20  d call a..      
15410 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
15420 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20   "failure"...   
15430 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
15440 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
15450 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
15460 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  re = String.Empt
15470 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
15480 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
15490 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
154a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
154e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
154f0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
15500 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ture;..      }..
15510 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
15570 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15580 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
15590 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
155a0 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
155b0 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
155c0 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
155d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
155e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
155f0 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
15600 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
15610 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
15620 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
15630 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
15640 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
15650 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
15660 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
15670 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
15680 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
15690 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
156a0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
156b0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
156c0 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
156d0 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
156e0 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
156f0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
15700 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
15710 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
15720 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
15730 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
15740 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
15750 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
15760 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  re /* in */..   
15770 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
15780 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
15790 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
157a0 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
157b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
157c0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
157d0 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
157e0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
157f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
15800 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
15810 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73  lOrEmpty(process
15820 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
15830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15840 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
15850 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
15860 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
15870 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
15880 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15890 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
158a0 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
158b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
158c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
158d0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
158e0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
158f0 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d  platformName;...
15900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
15910 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
15920 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
15930 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a  s.TryGetValue(..
15940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15950 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
15960 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74  rchitecture, out
15970 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d   platformName)).
15980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
15990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
159a0 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66      return platf
159b0 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ormName;..      
159c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
159d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
159e0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
159f0 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
15a00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15a50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15a60 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
15a70 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
15a80 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
15a90 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e  library based on
15aa0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
15ab0 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
15ac0 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ory and processo
15ad0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
15ae0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15af0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15b00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
15b10 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
15b20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
15b30 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
15b40 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
15b50 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
15b60 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
15b70 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
15b80 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
15b90 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
15ba0 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
15bb0 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
15bc0 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
15bd0 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
15be0 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
15bf0 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
15c00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
15c10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15c20 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
15c30 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
15c40 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
15c50 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
15c60 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
15c70 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
15c80 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
15c90 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
15ca0 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
15cb0 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
15cc0 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
15cd0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
15ce0 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
15cf0 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
15d00 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
15d10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
15d20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15d30 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
15d40 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  uleFileName">.. 
15d50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e       /// The can
15d60 64 69 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f  didate native mo
15d70 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74  dule file name t
15d80 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73  o load will be s
15d90 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20  tored here,..   
15da0 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73     /// if necess
15db0 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
15dc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
15dd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15de0 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  "nativeModuleHan
15df0 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  dle">..      ///
15e00 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
15e10 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74  le handle as ret
15e20 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62  urned by LoadLib
15e30 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f  rary will be sto
15e40 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  red..      /// h
15e50 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72  ere, if necessar
15e60 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  y.  This value w
15e70 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65  ill be IntPtr.Ze
15e80 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74  ro if the call t
15e90 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61  o..      /// Loa
15ea0 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d  dLibrary fails..
15eb0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
15ec0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
15ed0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
15ee0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
15ef0 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
15f00 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63  e was loaded suc
15f10 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72  cessfully; other
15f20 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
15f30 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
15f40 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
15f50 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
15f60 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53  ic bool PreLoadS
15f70 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
15f80 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65       string base
15f90 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20  Directory,      
15fa0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
15fb0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
15fc0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
15fd0 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e  ecture,    /* in
15fe0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
15ff0 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76 65  ef string native
16000 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20  ModuleFileName, 
16010 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
16020 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
16030 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
16040 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d  le    /* out */.
16050 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
16060 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16070 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
16080 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
16090 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64 69  pecified base di
160a0 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c  rectory is null,
160b0 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   use the default
160c0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
160d0 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65 6d       (i.e. attem
160e0 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  pt to automatica
160f0 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e 0d  lly detect it)..
16100 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
16110 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
16120 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
16130 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
16140 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
16150 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
16160 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
16170 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16180 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
16190 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
161a0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
161b0 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
161c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
161d0 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73 65          if (base
161e0 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
161f0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
16200 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
16210 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
16220 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
16230 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  TE: Determine th
16240 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
16250 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
16260 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
16270 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
16280 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e      If this is n
16290 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73  ot known by this
162a0 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f   class, we canno
162b0 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20  t continue...   
162c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
162d0 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
162e0 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61  NameOnly = GetNa
162f0 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
16300 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ameOnly();....  
16310 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
16320 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c  NameOnly == null
16330 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16340 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
16350 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
16360 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
16370 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
16380 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
16390 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
163a0 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
163b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
163c0 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
163d0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
163e0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
163f0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
16400 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
16410 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
16420 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  baseDirectory,..
16430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
16440 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
16450 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
16460 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
16470 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
16480 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
16490 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
164a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
164b0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
164c0 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
164d0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
164e0 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
164f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
16500 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
16510 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16520 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
16530 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
16540 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
16550 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
16560 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
16570 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
16580 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
16590 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
165a0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
165b0 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
165c0 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
165d0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
165e0 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
165f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16600 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
16610 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
16620 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
16630 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
16640 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
16650 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16660 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
16670 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
16680 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
16690 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
166a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
166b0 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
166c0 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
166d0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
166e0 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
166f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
16700 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
16710 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
16720 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
16730 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
16740 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
16750 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
16760 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
16770 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
16780 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
16790 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
167a0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
167b0 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
167c0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
167d0 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
167e0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
167f0 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
16800 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
16810 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
16820 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
16830 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
16840 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
16850 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
16860 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16870 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16880 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
16890 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
168a0 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
168b0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
168c0 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
168d0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
168e0 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
168f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16900 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
16910 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
16920 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
16930 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
16940 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
16950 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
16960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16970 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
16980 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
16990 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
169a0 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
169b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
169c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
169d0 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
169e0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
169f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
16a00 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
16a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16a20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16a30 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
16a40 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
16a50 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
16a60 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
16a70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16a80 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
16a90 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
16aa0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
16ab0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16ac0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
16ad0 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
16ae0 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
16af0 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
16b00 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
16b10 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
16b20 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
16b30 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
16b40 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
16b50 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
16b70 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
16b80 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
16b90 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
16ba0 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
16bb0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16bc0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
16bd0 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
16be0 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
16bf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
16c00 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
16c10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
16c20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
16c30 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
16c40 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
16c50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
16c60 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
16c70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16ca0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
16cb0 77 20 65 78 61 63 74 6c 79 20 77 68 65 72 65 20  w exactly where 
16cc0 77 65 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f  we are trying to
16cd0 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
16ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16cf0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
16d00 69 74 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d  ite library from
16d10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16d20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16d30 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
16d40 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
16d50 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
16d60 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
16d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
16d80 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
16d90 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
16da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16db0 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
16dc0 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74   pre-loader is t
16dd0 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61  rying to load na
16de0 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
16df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e00 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
16e10 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c  \"{0}\"...", fil
16e20 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f  eName)); /* thro
16e30 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
16e40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16e50 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
16e60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16e80 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
16e90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
16ea0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
16eb0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
16ed0 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f  E: Attempt to lo
16ee0 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  ad the native li
16ef0 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c  brary.  This wil
16f00 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20  l either..      
16f10 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16f20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20   return a valid 
16f30 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
16f40 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74  ndle, return Int
16f50 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20  Ptr.Zero,..     
16f60 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16f70 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78    or throw an ex
16f80 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d  ception.  This m
16f90 75 73 74 20 75 73 65 20 74 68 65 20 61 70 70 72  ust use the appr
16fa0 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20  opriate..       
16fb0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16fc0 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20  P/Invoke method 
16fd0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
16fe0 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
16ff0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
17000 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
17010 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46     nativeModuleF
17020 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61  ileName = fileNa
17030 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
17040 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48     nativeModuleH
17050 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69  andle = NativeLi
17060 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64  braryHelper.Load
17070 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65  Library(fileName
17080 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17090 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69      return (nati
170a0 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21  veModuleHandle !
170b0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
170c0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
170d0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
170e0 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
170f0 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  AD..          ca
17100 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
17110 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
17120 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
17130 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
17140 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
17150 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
17160 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
17170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17180 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
17190 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
171a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
171b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
171c0 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72   NOTE: First, gr
171d0 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33  ab the last Win3
171e0 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d  2 error number..
171f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17200 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17210 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73           int las
17220 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c  tError = Marshal
17230 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72  .GetLastWin32Err
17240 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or(); /* throw *
17250 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
17260 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17270 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17280 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65  NOTE: Show where
17290 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f   we failed to lo
172a0 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
172b0 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
172c0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
172d0 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c   library from al
172e0 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e  ong with the Win
172f0 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  32 error code an
17300 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
17310 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
17320 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74  ception informat
17330 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
17340 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
17360 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
17370 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
17380 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
17390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
173a0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
173b0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
173c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
173d0 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
173e0 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
173f0 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61  ailed to load na
17400 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
17410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17420 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
17430 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73 74  \"{0}\" (getLast
17440 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32  Error = {1}): {2
17450 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
17460 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
17470 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20  ame, lastError, 
17480 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
17490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
174a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
174b0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
174c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
174d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
174e0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
174f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
17500 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
17510 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
17520 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
17530 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e    }..#endif..#en
17540 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
17550 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
175b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
175c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f  FRAMEWORK..    /
175d0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
175e0 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  On the .NET Comp
175f0 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74  act Framework, t
17600 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65 72 6f  he native intero
17610 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d  p assembly must.
17620 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65  .    //       be
17630 20 75 73 65 64 20 62 65 63 61 75 73 65 20 69 74   used because it
17640 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72 61   provides severa
17650 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f  l workarounds to
17660 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20   .NET Compact.. 
17670 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72 61 6d     //       Fram
17680 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e  ework limitation
17690 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20  s important for 
176a0 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69 6f 6e  proper operation
176b0 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a 20 20   of the core..  
176c0 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73 74 65    //       Syste
176d0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 66 75  m.Data.SQLite fu
176e0 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67  nctionality (e.g
176f0 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f 20  . being able to 
17700 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20  bind..    //    
17710 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e     parameters an
17720 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20  d handle column 
17730 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 73 20  values of types 
17740 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62 6c 65  Int64 and Double
17750 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  )...    //..    
17760 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73  internal const s
17770 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
17780 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
17790 6f 70 2e 31 30 37 2e 64 6c 6c 22 3b 0d 0a 23 65  op.107.dll";..#e
177a0 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  lif SQLITE_STAND
177b0 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ARD..    //..   
177c0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
177d0 69 73 65 2c 20 69 66 20 74 68 65 20 73 74 61 6e  ise, if the stan
177e0 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72  dard SQLite libr
177f0 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ary is enabled, 
17800 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d  use it...    //.
17810 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
17820 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
17830 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
17840 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e  ";..#elif USE_IN
17850 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f  TEROP_DLL..    /
17860 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
17870 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
17880 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
17890 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
178a0 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20   is enabled,..  
178b0 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 69    //       use i
178c0 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  t...    //..    
178d0 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73  internal const s
178e0 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
178f0 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
17900 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d  op.dll";..#else.
17910 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
17920 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61  NOTE: Finally, a
17930 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d  ssume that the m
17940 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62  ixed-mode assemb
17950 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73 65 64  ly is being used
17960 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
17970 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
17980 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
17990 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  = "System.Data.S
179a0 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e  QLite.dll";..#en
179b0 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  dif....    // Th
179c0 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20  is section uses 
179d0 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68  interop calls th
179e0 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65  at also fetch te
179f0 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74  xt length to opt
17a00 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e  imize conversion
17a10 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75  ...    // When u
17a20 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
17a30 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65  d dll, we can re
17a40 70 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c  place these call
17a50 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71  s with normal sq
17a60 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a  lite calls and..
17a70 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69      // do unopti
17a80 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e  mized conversion
17a90 73 20 69 6e 73 74 65 61 64 20 61 66 74 65 72 77  s instead afterw
17aa0 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  ards..    #regio
17ab0 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20  n interop added 
17ac0 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73  textlength calls
17ad0 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
17ae0 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
17af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17b00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
17b10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17b20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17b30 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
17b40 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  r_name_interop(I
17b50 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
17b60 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
17b70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
17b80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17b90 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
17ba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17bb0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
17bc0 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
17bd0 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
17be0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
17bf0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
17c00 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
17c10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17c20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17c30 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17c40 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
17c50 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
17c60 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
17c70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
17c80 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
17c90 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
17ca0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17cb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17cc0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
17cd0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
17ce0 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72  n_decltype_inter
17cf0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
17d00 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
17d10 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
17d20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17d30 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
17d40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17d50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17d60 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
17d70 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pe16_interop(Int
17d80 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
17d90 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
17da0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17db0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17dc0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17dd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17de0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
17df0 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  umn_name_interop
17e00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
17e10 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
17e20 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
17e30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17e40 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
17e50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17e60 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
17e70 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69  _column_name16_i
17e80 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
17e90 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
17ea0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
17eb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17ec0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
17ed0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17ee0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17ef0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
17f00 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  igin_name_intero
17f10 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
17f20 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
17f30 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
17f40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17f50 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
17f60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17f70 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
17f80 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
17f90 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
17fa0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
17fb0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
17fc0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
17fd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17fe0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
17ff0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18000 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
18010 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
18020 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18030 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18040 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18060 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18080 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18090 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
180a0 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74  table_name16_int
180b0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
180c0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
180d0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
180e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
180f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18100 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18110 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18120 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
18130 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18140 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18150 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18160 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18170 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18180 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18190 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
181a0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
181b0 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49  text16_interop(I
181c0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
181d0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
181e0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
181f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18200 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18210 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18220 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
18230 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e  rrmsg_interop(In
18240 74 50 74 72 20 64 62 2c 20 72 65 66 20 69 6e 74  tPtr db, ref int
18250 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
18260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18270 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18280 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18290 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
182a0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
182b0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
182c0 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c   db, IntPtr pSql
182d0 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65  , int nBytes, re
182e0 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72  f IntPtr stmt, r
182f0 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d  ef IntPtr ptrRem
18300 61 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e 52 65  ain, ref int nRe
18310 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  main);....    [D
18320 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18330 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18340 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18350 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
18360 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  e sqlite3_table_
18370 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f  column_metadata_
18380 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
18390 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
183a0 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
183b0 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
183c0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
183d0 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
183e0 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
183f0 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
18400 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
18410 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
18420 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74 20 64  toInc, ref int d
18430 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20 63 73  tLen, ref int cs
18440 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  Len);....    [Dl
18450 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18460 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18470 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18480 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18490 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72  value_text_inter
184a0 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
184b0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
184c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
184d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
184e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
184f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18500 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
18510 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
18520 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
18530 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18540 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18550 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18560 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
18570 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f   sqlite3_malloc_
18580 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  size_interop(Int
18590 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49  Ptr p);....#if I
185a0 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20  NTEROP_LOG..    
185b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
185c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
185d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
185e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
185f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
18600 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29  ig_log_interop()
18610 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  ;..#endif..#endi
18620 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
18630 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
18640 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18650 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  // These functio
18660 6e 73 20 61 64 64 20 65 78 69 73 74 69 6e 67 20  ns add existing 
18670 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e  functionality on
18680 20 74 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61   top of SQLite a
18690 6e 64 20 72 65 71 75 69 72 65 20 61 20 6c 69 74  nd require a lit
186a0 74 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20  tle effort to.. 
186b0 20 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e     // get workin
186c0 67 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65  g when using the
186d0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
186e0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23   library...    #
186f0 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61  region interop a
18700 64 64 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69  dded functionali
18710 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ty....#if !SQLIT
18720 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
18730 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18740 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18750 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18760 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
18770 65 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28  erop_libversion(
18780 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
187a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
187b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
187c0 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75  tPtr interop_sou
187d0 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  rceid();....    
187e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
187f0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18800 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18810 65 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f  ern int interop_
18820 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
18830 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61  ed(IntPtr zOptNa
18840 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  me);....    [Dll
18850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18860 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18870 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18880 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 63  IntPtr interop_c
18890 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
188a0 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20  (int N);....    
188b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
188c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
188d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
188e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
188f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
18900 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
18910 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
18920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18930 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18950 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18960 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
18970 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70  function_interop
18980 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
18990 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
189a0 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
189b0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
189c0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
189d0 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
189e0 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
189f0 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
18a00 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64  ffinal, int need
18a10 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20  CollSeq);....   
18a20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18a30 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18a40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18a50 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18a60 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e  Code sqlite3_fin
18a70 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e  alize_interop(In
18a80 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
18a90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18aa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18ab0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18ac0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18ad0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
18ae0 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74  ackup_finish_int
18af0 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b  erop(IntPtr back
18b00 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  up);....    [Dll
18b10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18b20 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18b30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18b40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18b50 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f  sqlite3_blob_clo
18b60 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  se_interop(IntPt
18b70 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20  r blob);....    
18b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18b90 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18ba0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18bb0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
18bc0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
18bd0 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
18be0 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
18bf0 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
18c00 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
18c10 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
18c20 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
18c30 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
18c40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18c50 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18c60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18c70 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
18c80 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
18c90 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
18ca0 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
18cb0 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
18cc0 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
18cd0 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
18ce0 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
18cf0 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
18d00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18d10 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18d20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18d30 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
18d40 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  e sqlite3_reset_
18d50 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
18d60 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
18d70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18d80 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18d90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18da0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
18db0 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nges_interop(Int
18dc0 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
18dd0 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
18de0 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
18df0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
18e00 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61  / The standard a
18e10 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65  pi call equivale
18e20 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65  nts of the above
18e30 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a   interop calls..
18e40 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e      #region stan
18e50 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66  dard versions of
18e60 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f   interop functio
18e70 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  ns....#if SQLITE
18e80 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
18e90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18ea0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18eb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ec0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18ed0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18ee0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18ef0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18f00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18f10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18f20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18f30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
18f40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
18f50 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50  lite3_close(IntP
18f60 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
18f70 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43  INTEROP_LEGACY_C
18f80 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  LOSE..#if !PLATF
18f90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18fa0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18fb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18fc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18fd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18fe0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18ff0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19000 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19010 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19020 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19030 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
19040 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
19050 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64  lose_v2(IntPtr d
19060 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a  b); /* 3.7.14+ *
19070 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  /..#endif....#if
19080 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19090 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
190a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
190b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
190c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
190d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
190e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
190f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19100 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19110 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19120 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19130 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19140 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
19150 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
19160 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
19170 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
19180 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
19190 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
191a0 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
191b0 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
191c0 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
191d0 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
191e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
191f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19200 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19210 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19220 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19240 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19250 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19260 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
19270 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
19280 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
19290 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
192a0 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
192b0 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ze(IntPtr stmt);
192c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
192d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
192e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
192f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19300 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19310 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19320 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19330 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19340 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19350 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19360 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19370 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
19380 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
19390 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74  kup_finish(IntPt
193a0 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
193b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
193c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
193d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
193e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
193f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19400 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19410 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19420 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19430 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19440 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19450 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19460 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19470 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
19480 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
19490 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
194a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
194b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
194c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
194d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
194e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
194f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19500 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19510 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19520 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19530 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19540 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
19550 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
19560 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
19570 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
19580 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19590 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
195a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
195b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
195c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
195d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
195e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
195f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19600 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19610 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19620 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19630 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19640 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
19650 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
19660 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
19670 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19680 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
196a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
196b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
196c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
196d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
196e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
196f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19700 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19710 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19720 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
19730 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
19740 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
19750 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
19760 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19770 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19780 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19790 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
197a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
197b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
197c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
197d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
197e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
197f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19800 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19810 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
19820 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
19830 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
19840 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
19850 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19860 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19870 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19880 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19890 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
198a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
198b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
198c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
198d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
198e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
198f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19900 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19910 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
19920 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19930 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
19940 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19950 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19960 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19970 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19980 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19990 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
199a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
199b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
199c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
199d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
199e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
199f0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
19a00 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
19a10 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19a20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19a30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19a40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19a50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19a60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19a70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19a80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19a90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19aa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19ab0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19ac0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19ad0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
19ae0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
19af0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
19b00 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
19b10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19b20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19b30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19b40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19b50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19b60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19b70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19b80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19b90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19ba0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19bb0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19bc0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19bd0 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
19be0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
19bf0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
19c00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19c10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19c20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19c30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19c40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19c50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19c60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19c70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19c80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19c90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19ca0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
19cb0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
19cc0 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
19cd0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
19ce0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
19cf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19d00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19d10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19d20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19d30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19d40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19d50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19d70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19d80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19d90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19da0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19db0 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
19dc0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19dd0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
19de0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19df0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19e00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19e10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19e20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19e30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19e40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19e50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19e60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19e70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19e80 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19e90 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
19ea0 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
19eb0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19ec0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
19ed0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19ee0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19ef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19f00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19f10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19f20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19f30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19f40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19f50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19f60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19f70 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19f80 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
19f90 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
19fa0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19fb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19fd0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19fe0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19ff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a000 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a010 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a020 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a030 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a040 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a050 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a060 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a070 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
1a080 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1a090 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1a0a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a0b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a0c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a0d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a0e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a0f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a100 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a120 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a130 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a140 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1a150 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
1a160 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
1a170 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a180 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a190 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a1a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a1b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a1c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a1d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a1e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a1f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a210 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a220 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a230 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
1a240 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20  pare(IntPtr db, 
1a250 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
1a260 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
1a270 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
1a280 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
1a290 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50  ....#if USE_PREP
1a2a0 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41  ARE_V2..#if !PLA
1a2b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a2c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1a2d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a2e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1a2f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1a300 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a310 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1a320 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a330 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1a340 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a350 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1a360 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1a370 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50  _prepare_v2(IntP
1a380 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
1a390 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
1a3a0 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
1a3b0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
1a3c0 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  emain);..#endif.
1a3d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a3e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a3f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a400 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a420 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a430 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a440 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a450 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a460 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a470 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a480 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1a490 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
1a4a0 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
1a4b0 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
1a4c0 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
1a4d0 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
1a4e0 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20  [] colName, ref 
1a4f0 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
1a500 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  pe, ref IntPtr p
1a510 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69  trCollSeq, ref i
1a520 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20  nt notNull, ref 
1a530 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
1a540 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  ref int autoInc)
1a550 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a560 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a570 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a580 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a590 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a5a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a5b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a5c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a5d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a5e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a5f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a600 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1a610 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
1a620 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
1a630 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a640 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a650 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a660 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a670 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a680 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a690 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a6a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a6b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a6c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a6d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1a6e0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
1a6f0 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
1a700 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
1a710 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53  .    // SQLITE_S
1a720 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
1a730 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1a740 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
1a750 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
1a760 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
1a770 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
1a780 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
1a790 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
1a7a0 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
1a7b0 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
1a7c0 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
1a7d0 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
1a7e0 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
1a7f0 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
1a800 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
1a810 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1a820 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a830 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1a840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a850 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1a860 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
1a870 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
1a880 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1a890 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c 20 72   ref int type, r
1a8a0 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65 66 20  ef int enc, ref 
1a8b0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
1a8c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a8d0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1a8e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a8f0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1a900 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
1a910 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
1a920 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
1a930 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
1a940 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
1a950 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
1a960 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a970 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1a980 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a990 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a9a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
1a9b0 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
1a9c0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1a9d0 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66 20 6c  nt cursor, ref l
1a9e0 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
1a9f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1aa00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1aa10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1aa20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1aa30 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
1aa40 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
1aa50 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1aa60 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
1aa70 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
1aa80 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
1aa90 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74  umnName, ref int
1aaa0 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65 66 20   sortOrder, ref 
1aab0 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66  int onError, ref
1aac0 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
1aad0 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c  n, ref int colll
1aae0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1aaf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ab00 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1ab10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ab20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  int sqlite3_tabl
1ab30 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70  e_cursor_interop
1ab40 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1ab50 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52  t db, int tableR
1ab60 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e  ootPage);....#en
1ab70 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
1ab80 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
1ab90 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1aba0 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50    // Standard AP
1abb0 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61  I calls global a
1abc0 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20  cross versions. 
1abd0 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77   There are a few
1abe0 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e   instances of in
1abf0 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
1ac00 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e   // scattered in
1ac10 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20   here, but they 
1ac20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20  are only active 
1ac30 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  when PLATFORM_CO
1ac40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69  MPACTFRAMEWORK i
1ac50 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  s declared...   
1ac60 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
1ac70 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c  d sqlite api cal
1ac80 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  ls....#if !PLATF
1ac90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1aca0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1acb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1acc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1acd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ace0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1acf0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ad00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ad10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ad20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ad30 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ad40 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
1ad50 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
1ad60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ad70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ad80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ad90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ada0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1adb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1adc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1add0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ade0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1adf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ae00 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1ae10 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
1ae20 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  umber();....#if 
1ae30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ae40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ae50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ae60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ae70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ae80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ae90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1aea0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1aeb0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1aec0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1aed0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1aee0 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72  Ptr sqlite3_sour
1aef0 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  ceid();....#if !
1af00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1af10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1af20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1af30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1af40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1af50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1af60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1af70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1af80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1af90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1afa0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1afb0 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
1afc0 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74  ption_used(IntPt
1afd0 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a  r zOptName);....
1afe0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1aff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b010 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b020 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b030 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b040 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b050 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b060 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b070 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b080 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b090 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1b0a0 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
1b0b0 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66  t(int N);....#if
1b0c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b0d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b0e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b0f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1b100 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b110 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b120 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1b130 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b140 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1b150 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1b160 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1b170 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1b180 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61  lite3_enable_sha
1b190 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20 20 20  red_cache(..    
1b1a0 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b      int enable);
1b1b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b1c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b1d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b1e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b1f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b200 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b210 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b220 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b230 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b240 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b250 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b260 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1b270 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
1b280 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
1b290 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
1b2a0 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62  Ptr db, int enab
1b2b0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  le);....#if !PLA
1b2c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b2d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1b2e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b2f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1b300 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1b310 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b320 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1b330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b340 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1b350 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1b360 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1b370 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1b380 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
1b390 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1b3a0 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65   db, byte[] file
1b3b0 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f  Name, byte[] pro
1b3c0 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  cName, ref IntPt
1b3d0 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69  r pError);....#i
1b3e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b3f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b400 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b410 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b420 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b430 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b440 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b450 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b460 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b470 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b480 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1b490 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1b4a0 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f  qlite3_overload_
1b4b0 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20  function(IntPtr 
1b4c0 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65  db, IntPtr zName
1b4d0 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d  , int nArgs);...
1b4e0 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69  .#if WINDOWS..#i
1b4f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b500 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b510 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b520 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b530 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b540 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b550 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
1b560 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
1b570 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b590 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
1b5a0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
1b5b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
1b5c0 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
1b5d0 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33  he "sqlite3_win3
1b5e0 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22  2_set_directory"
1b5f0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1b600 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
1b610 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
1b620 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
1b630 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f   Windows...    /
1b640 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
1b650 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1b660 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1b670 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
1b680 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74  directory(uint t
1b690 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  ype, string valu
1b6a0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55  e);....#if !DEBU
1b6b0 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c  G // NOTE: Shoul
1b6c0 64 20 62 65 20 22 57 49 4e 33 32 48 45 41 50 20  d be "WIN32HEAP 
1b6d0 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23  && !MEMDEBUG"..#
1b6e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b6f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b700 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b710 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b720 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b730 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b740 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b750 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b760 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b770 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
1b780 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
1b790 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
1b7a0 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  et_heap" SQLite 
1b7b0 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
1b7c0 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
1b7d0 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
1b7e0 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
1b7f0 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
1b800 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
1b810 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
1b820 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
1b830 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
1b840 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
1b850 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
1b860 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
1b870 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
1b880 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
1b890 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
1b8a0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
1b8b0 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
1b8c0 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
1b8d0 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
1b8e0 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
1b8f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b900 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1b910 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
1b920 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d  reset_heap();...
1b930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b960 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b970 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b990 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b9c0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
1b9d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
1b9e0 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63  "sqlite3_win32_c
1b9f0 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c  ompact_heap" SQL
1ba00 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1ba10 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
1ba20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
1ba30 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
1ba40 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69  dows when the Wi
1ba50 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63  n32 native alloc
1ba60 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20  ator is in..    
1ba70 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e  //       use (i.
1ba80 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69  e. by default, i
1ba90 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c  n "Release" buil
1baa0 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
1bab0 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  a.SQLite..    //
1bac0 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42         only).  B
1bad0 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44  y default, in "D
1bae0 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20  ebug" builds of 
1baf0 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
1bb00 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  te, the..    // 
1bb10 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61        MEMDEBUG a
1bb20 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64  llocator is used
1bb30 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
1bb40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1bb50 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1bb60 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
1bb70 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70  n32_compact_heap
1bb80 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73  (ref uint larges
1bb90 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  t);..#endif..#en
1bba0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1bbb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bbc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bbd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bbe0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bbf0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bc00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bc10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bc20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bc30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bc40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bc50 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1bc60 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e  qlite3_malloc(in
1bc70 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t n);....#if !PL
1bc80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bc90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bca0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bcb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bcc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bcd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bce0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bcf0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bd00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bd10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bd20 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1bd30 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
1bd40 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e  (IntPtr p, int n
1bd50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1bd60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bd70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bd80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bd90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bda0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bdb0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1bdc0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bdd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bde0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bdf0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1be00 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1be10 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
1be20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1be30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1be40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1be50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1be60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1be70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1be80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1be90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bea0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1beb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bec0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bed0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1bee0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1bef0 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
1bf00 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
1bf10 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
1bf20 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
1bf30 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
1bf40 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
1bf50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1bf60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1bf70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bf80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1bf90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1bfa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1bfb0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1bfc0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1bfd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bfe0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bff0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1c000 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1c010 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c020 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c030 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1c040 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
1c050 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
1c060 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
1c070 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c080 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c090 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c0a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c0b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c0c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c0d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c0e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c0f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c100 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c110 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c120 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1c130 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
1c140 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
1c150 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c160 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c180 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c190 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c1a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c1b0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1c1c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c1d0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
1c1e0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
1c1f0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
1c200 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1c210 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c220 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c230 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c240 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c250 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c260 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c270 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c290 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c2a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c2b0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1c2c0 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
1c2d0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1c2e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c2f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c300 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c310 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c320 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c330 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c340 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1c350 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c360 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
1c370 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
1c380 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1c390 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c3a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c3b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c3c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c3d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c3e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c3f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c400 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
1c410 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
1c420 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
1c430 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
1c440 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
1c450 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c460 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c470 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c480 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c490 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c4a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c4b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c4c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c4d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c4e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c4f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c500 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
1c510 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
1c520 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c530 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c540 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c550 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c560 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c570 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c580 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c590 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c5a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c5b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c5c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1c5d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1c5e0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
1c5f0 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
1c600 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
1c610 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c620 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c630 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c640 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c650 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c660 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c670 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c690 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c6a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c6b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c6c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c6d0 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
1c6e0 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
1c6f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c700 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c710 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c730 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c740 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c750 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c760 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c770 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c780 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c790 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c7a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c7b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
1c7c0 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
1c7d0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
1c7e0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
1c7f0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
1c800 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
1c810 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c820 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c830 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c840 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c850 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c860 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c870 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
1c880 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c890 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c8a0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
1c8b0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
1c8c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
1c8d0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
1c8e0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1c8f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c900 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c910 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c920 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c930 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c940 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c950 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c960 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c970 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c990 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c9a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c9b0 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
1c9c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c9d0 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
1c9e0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1c9f0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
1ca00 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
1ca10 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
1ca20 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
1ca30 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
1ca40 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
1ca50 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
1ca60 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
1ca70 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
1ca80 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
1ca90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1caa0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cab0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cac0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1cad0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
1cae0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1caf0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1cb00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1cb10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1cb20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cb30 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
1cb40 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
1cb50 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
1cb60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cb70 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1cb80 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1cb90 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
1cba0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1cbb0 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
1cbc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1cbd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cbe0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1cbf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1cc00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1cc10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1cc20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1cc30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1cc40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1cc50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1cc60 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
1cc70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1cc80 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
1cc90 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
1cca0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1ccb0 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
1ccc0 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
1ccd0 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
1cce0 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
1ccf0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
1cd00 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
1cd10 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
1cd20 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
1cd30 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
1cd40 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
1cd50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cd60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cd70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cd80 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1cd90 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
1cda0 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
1cdb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cdc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cdd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1cde0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cdf0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1ce00 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
1ce10 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
1ce20 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
1ce30 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1ce40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ce50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ce60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ce70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ce80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ce90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1cea0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ceb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1cec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ced0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1cee0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cef0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1cf00 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
1cf10 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
1cf20 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1cf30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cf40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cf50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cf60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1cf70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1cf80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cf90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1cfa0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1cfb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1cfc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1cfd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cfe0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1cff0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
1d000 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
1d010 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
1d020 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
1d030 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
1d040 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
1d050 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d060 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d070 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d080 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d090 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d0a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d0b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d0c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d0d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d0e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d0f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1d100 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1d110 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
1d120 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
1d130 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d140 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d150 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d160 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d170 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d190 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d1a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d1b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1d1c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d1d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d1e0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
1d1f0 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
1d200 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
1d210 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
1d220 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d230 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d240 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d250 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d260 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d270 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d280 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d290 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d2a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d2b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d2c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d2d0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1d2e0 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
1d2f0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
1d300 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d310 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d320 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d330 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d340 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d360 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d370 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d380 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d390 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d3a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1d3b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1d3c0 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
1d3d0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
1d3e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d3f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d400 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d410 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d420 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d430 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d440 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d450 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d460 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d470 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d480 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1d490 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
1d4a0 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
1d4b0 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
1d4c0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1d4d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d4e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d4f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d500 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d510 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d520 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
1d530 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d540 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
1d550 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1d560 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
1d570 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1d580 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1d590 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d5a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d5b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d5c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d5d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d5e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d5f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d610 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1d620 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d630 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1d640 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
1d650 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
1d660 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1d670 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d680 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d6a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d6b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d6c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d6d0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1d6e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d6f0 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
1d700 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
1d710 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1d720 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
1d730 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d740 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d750 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d760 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d780 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d790 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d7a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d7b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d7c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d7d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d7e0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1d7f0 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
1d800 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1d810 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1d820 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d830 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d840 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d850 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d860 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d870 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d880 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d890 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d8a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d8b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d8c0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1d8d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
1d8e0 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
1d8f0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1d900 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d910 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d920 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d930 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d940 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d950 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d960 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d970 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d980 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d990 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d9a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d9b0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
1d9c0 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
1d9d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1d9e0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1d9f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1da00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1da10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1da20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1da30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1da40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1da50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1da60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1da70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1da80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1da90 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
1daa0 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
1dab0 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
1dac0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1dad0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1dae0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1daf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1db00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1db10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1db20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1db30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1db40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1db50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1db60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1db70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db80 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1db90 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1dba0 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
1dbb0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1dbc0 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
1dbd0 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
1dbe0 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
1dbf0 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
1dc00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1dc10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1dc20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dc30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1dc40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1dc50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1dc60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1dc70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dc80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1dc90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1dca0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1dcb0 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
1dcc0 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
1dcd0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
1dce0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dcf0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dd00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dd10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1dd20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1dd30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dd40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1dd50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1dd60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1dd70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1dd80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1dd90 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1dda0 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
1ddb0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
1ddc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ddd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1dde0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ddf0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1de00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1de10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1de20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1de30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1de40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1de50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1de60 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1de70 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
1de80 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
1de90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dea0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1deb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dec0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ded0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1dee0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1def0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1df00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1df10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1df20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1df30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1df40 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
1df50 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
1df60 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
1df70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1df80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1df90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1dfa0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1dfb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1dfc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1dfd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1dfe0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
1dff0 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
1e000 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
1e010 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
1e020 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e030 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e040 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e050 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e060 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e070 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e080 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e090 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e0a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e0b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e0c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e0d0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
1e0e0 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
1e0f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e100 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e110 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e120 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e130 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e140 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e150 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
1e160 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e170 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
1e180 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
1e190 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
1e1a0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1e1b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e1c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e1d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e1e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e1f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e200 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e210 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e220 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e230 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e240 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e250 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
1e260 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
1e270 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
1e280 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
1e290 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e2a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e2b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e2c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e2d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e2e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e2f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e300 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e310 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e320 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e330 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1e340 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
1e350 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
1e360 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
1e370 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
1e380 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
1e390 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e3a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e3b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e3c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e3d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e3e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e3f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1e400 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e410 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1e420 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
1e430 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
1e440 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
1e450 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1e460 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e470 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e480 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e490 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e4a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e4b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e4c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e4d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e4e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e4f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e500 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1e510 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1e520 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
1e530 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
1e540 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
1e550 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e560 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e570 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e580 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e590 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e5a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e5b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e5c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e5d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e5e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e5f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e600 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1e610 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
1e620 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
1e630 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
1e640 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
1e650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e6a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e6b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e6c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e6d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e6e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e6f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e700 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1e710 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
1e720 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
1e730 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e740 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e750 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e760 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e770 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e780 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e790 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e7a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e7b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e7c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e7d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e7e0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1e7f0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e800 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
1e810 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
1e820 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e830 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e840 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e850 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e860 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e870 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e880 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e890 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e8a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e8b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e8c0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1e8d0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
1e8e0 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
1e8f0 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
1e900 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1e910 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e920 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e930 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e940 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e950 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e960 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e970 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e980 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e990 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e9a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e9b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1e9c0 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
1e9d0 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
1e9e0 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
1e9f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ea00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ea10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ea20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ea30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ea40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ea50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ea60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ea70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ea80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ea90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1eaa0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1eab0 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
1eac0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
1ead0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
1eae0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1eaf0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1eb00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eb10 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1eb20 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1eb30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1eb40 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1eb50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1eb60 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1eb70 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
1eb80 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
1eb90 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
1eba0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ebb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ebc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ebd0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ebe0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ebf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ec00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ec10 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ec20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ec30 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ec40 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ec50 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1ec60 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
1ec70 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
1ec80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ec90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eca0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ecb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ecc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ecd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ece0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ecf0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ed00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ed10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ed20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ed30 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1ed40 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
1ed50 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1ed60 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
1ed70 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1ed80 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1ed90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1eda0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1edb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1edc0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1edd0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ede0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1edf0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ee00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ee10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ee20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ee30 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1ee40 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
1ee50 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
1ee60 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
1ee70 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
1ee80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ee90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1eea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eeb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1eec0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1eed0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1eee0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1eef0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1ef00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ef10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ef20 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1ef30 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1ef40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ef50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ef60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1ef70 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
1ef80 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
1ef90 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
1efa0 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
1efb0 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
1efc0 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
1efd0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1efe0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1eff0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f000 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f010 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f020 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f030 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
1f040 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
1f050 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f060 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f070 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
1f080 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
1f090 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f0a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f0b0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1f0c0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
1f0d0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1f0e0 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
1f0f0 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
1f100 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f120 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f130 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f140 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f150 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f160 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
1f170 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
1f180 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f190 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f1a0 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
1f1b0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
1f1c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f1d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f1e0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1f1f0 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
1f200 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1f210 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
1f220 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
1f230 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
1f240 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
1f250 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
1f260 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
1f270 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f280 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f2a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f2b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f2c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f2d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f2e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f2f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f300 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f310 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1f320 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1f330 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
1f340 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
1f350 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
1f360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f380 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f390 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f3a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f3b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f3c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f3d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f3e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f3f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f400 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f410 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f420 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
1f430 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1f440 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
1f450 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1f460 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
1f470 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
1f480 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f490 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f4a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f4b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f4c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f4d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f4e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f4f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f500 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f510 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f520 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
1f530 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
1f540 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f550 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f560 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f570 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f580 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f590 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f5a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f5b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f5c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f5d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f5e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f5f0 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
1f600 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
1f610 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
1f620 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f630 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f640 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f650 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f660 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f670 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f680 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f690 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f6a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f6b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f6c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f6d0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
1f6e0 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
1f6f0 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
1f700 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
1f710 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
1f720 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
1f730 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f740 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f750 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f770 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f780 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f790 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f7a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f7b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f7c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f7d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f7e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1f7f0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
1f800 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
1f810 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
1f820 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1f830 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1f840 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f850 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f860 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f870 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f880 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f890 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f8a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f8b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f8c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f8d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f8e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f8f0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
1f900 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
1f910 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
1f920 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
1f930 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
1f940 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f950 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f960 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f970 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f980 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f990 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f9a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f9b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f9c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f9d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f9e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f9f0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1fa00 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
1fa10 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
1fa20 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
1fa30 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
1fa40 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
1fa50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fa60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1fa70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fa80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1fa90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1faa0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1fab0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1fac0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fad0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1fae0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1faf0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1fb00 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
1fb10 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
1fb20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
1fb30 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
1fb40 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
1fb50 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
1fb60 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
1fb70 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
1fb80 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
1fb90 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
1fba0 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
1fbb0 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
1fbc0 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
1fbd0 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
1fbe0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fbf0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fc00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fc10 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
1fc20 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
1fc30 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
1fc40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1fc50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1fc60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1fc70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fc80 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
1fc90 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
1fca0 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
1fcb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1fcc0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1fcd0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1fce0 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
1fcf0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
1fd00 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
1fd10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fd20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1fd30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fd40 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1fd50 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1fd60 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
1fd70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1fd80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1fd90 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1fda0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fdb0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1fdc0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1fdd0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1fde0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1fdf0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1fe00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1fe10 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
1fe20 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1fe30 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
1fe40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1fe50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1fe60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1fe70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1fe80 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1fe90 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
1fea0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1feb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1fec0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1fed0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1fee0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1fef0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1ff00 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
1ff10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ff20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ff30 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1ff40 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
1ff50 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
1ff60 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
1ff70 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
1ff80 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
1ff90 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
1ffa0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ffb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ffc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ffd0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
1ffe0 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
1fff0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
20000 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20010 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20020 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20030 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20040 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
20050 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63   = "sqlite3_db_c
20060 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
20070 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20080 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20090 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
200a0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69  ite3_db_config_i
200b0 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72  nt_refint(IntPtr
200c0 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69   db, SQLiteConfi
200d0 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69  gDbOpsEnum op, i
200e0 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e  nt value, ref in
200f0 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69  t result);....#i
20100 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20120 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20130 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20140 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20150 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20160 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20170 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20180 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20190 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
201a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
201b0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f  ntPtr sqlite3_ro
201c0 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50  llback_hook(IntP
201d0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c  tr db, SQLiteRol
201e0 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75  lbackCallback fu
201f0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
20200 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
20210 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20220 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20230 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20240 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20250 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20260 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20270 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20290 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
202a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
202b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
202c0 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65  qlite3_db_handle
202d0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
202e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
202f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20300 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20310 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20320 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20330 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20340 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20350 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20360 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20370 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20380 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20390 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
203a0 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65  de sqlite3_db_re
203b0 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74  lease_memory(Int
203c0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
203d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
203e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
203f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20400 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20410 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20420 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20430 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20440 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20450 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20460 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20470 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20480 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
20490 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64  ilename(IntPtr d
204a0 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65  b, IntPtr dbName
204b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
204c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
204d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
204e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
204f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20500 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20510 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20520 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20530 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20540 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20550 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20560 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
20570 65 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49  e3_db_readonly(I
20580 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
20590 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
205a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
205b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
205c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
205d0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
205e0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
205f0 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c  _filename", Call
20600 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20610 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20620 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20630 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20640 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
20650 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
20660 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29  e3_db_filename")
20670 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20680 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20690 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
206a0 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
206b0 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 64 62  _bytes(IntPtr db
206c0 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29  , byte[] dbName)
206d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
206e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
206f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20700 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20710 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20720 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20730 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20740 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20750 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20760 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20770 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20780 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
20790 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49  ite3_next_stmt(I
207a0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
207b0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
207c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
207d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
207e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
207f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20800 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20810 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20820 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20840 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20850 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20860 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20870 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20880 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20  te3_exec(IntPtr 
20890 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71  db, byte[] strSq
208a0 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c  l, IntPtr pvCall
208b0 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50  back, IntPtr pvP
208c0 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72  aram, ref IntPtr
208d0 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66   errMsg);....#if
208e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
208f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20900 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20910 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20920 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20930 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20940 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20950 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20960 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20970 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20980 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
20990 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73  t sqlite3_releas
209a0 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79  e_memory(int nBy
209b0 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tes);....#if !PL
209c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
209d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
209e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
209f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
20a00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20a10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20a20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20a30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20a40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20a50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20a60 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
20a70 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f  lite3_get_autoco
20a80 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b  mmit(IntPtr db);
20a90 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20aa0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20ab0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20ac0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20ad0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20ae0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20af0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20b00 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20b10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20b20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20b30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20b40 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20b50 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
20b60 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
20b70 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  es(IntPtr db, in
20b80 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66  t onoff);....#if
20b90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20ba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20bc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20bd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20be0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20bf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20c10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20c20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20c30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20c40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20c50 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e  lite3_errcode(In
20c60 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
20c70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20c80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20c90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20ca0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20cb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20cc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20cd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20ce0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20cf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20d00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20d10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20d20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20d30 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
20d40 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62  rrcode(IntPtr db
20d50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20d60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20d70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20d80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20d90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20da0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20db0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20dc0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20dd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20de0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20df0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20e00 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20e10 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c  lite3_errstr(SQL
20e20 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29  iteErrorCode rc)
20e30 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d  ; /* 3.7.15+ */.
20e40 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20  ...    // Since 
20e50 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61  sqlite3_log() ta
20e60 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
20e70 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
20e80 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
20e90 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
20ea0 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
20eb0 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20  ossible calls.  
20ec0 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20  For now, we are 
20ed0 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20  only exposing a 
20ee0 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61  single string, a
20ef0 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e  nd..    // depen
20f00 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20  d on the caller 
20f10 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74  to format the st
20f20 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54  ring...#if !PLAT
20f30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20f40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20f50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20f60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20f70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20f80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20f90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20fa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20fb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20fc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20fd0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
20fe0 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45  ite3_log(SQLiteE
20ff0 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64  rrorCode iErrCod
21000 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61  e, byte[] zForma
21010 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
21020 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21030 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21050 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21060 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21070 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21080 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21090 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
210a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
210b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
210c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
210d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
210e0 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74  file_control(Int
210f0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a  Ptr db, byte[] z
21100 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20  DbName, int op, 
21110 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d  IntPtr pArg);...
21120 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21130 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21140 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21150 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21160 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21170 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21180 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21190 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
211a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
211b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
211c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
211d0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
211e0 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74  _backup_init(Int
211f0 50 74 72 20 64 65 73 74 44 62 2c 20 62 79 74 65  Ptr destDb, byte
21200 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e  [] zDestName, In
21210 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62  tPtr sourceDb, b
21220 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d  yte[] zSourceNam
21230 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
21240 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21250 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21260 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21270 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21280 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21290 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
212a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
212b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
212c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
212d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
212e0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
212f0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
21300 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50  backup_step(IntP
21310 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  tr backup, int n
21320 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Page);....#if !P
21330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21360 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21370 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21380 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21390 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
213a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
213b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
213c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
213d0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
213e0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65  qlite3_backup_re
213f0 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62  maining(IntPtr b
21400 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
21410 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21420 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21430 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21440 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21450 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21460 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21470 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21480 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21490 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
214a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
214b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
214c0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70  sqlite3_backup_p
214d0 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  agecount(IntPtr 
214e0 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  backup);....#if 
214f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21500 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21510 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21520 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21530 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21540 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21550 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21560 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21570 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21580 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21590 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
215a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
215b0 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28  ite3_blob_close(
215c0 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
215d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
215e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
215f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21600 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21610 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21630 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21640 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21650 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21660 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21670 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21680 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c  n int sqlite3_bl
21690 6f 62 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ob_bytes(IntPtr 
216a0 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  blob);....#if !P
216b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
216c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
216d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
216e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
216f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21700 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21710 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21720 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21730 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21740 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21750 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21760 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21770 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74  e3_blob_open(Int
21780 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
21790 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
217a0 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f  lName, byte[] co
217b0 6c 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49  lName, long rowI
217c0 64 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65  d, int flags, re
217d0 66 20 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62  f IntPtr ptrBlob
217e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
217f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21800 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21810 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21820 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21830 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21840 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21850 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21860 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21870 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21880 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21890 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
218a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
218b0 6c 6f 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20  lob_read(IntPtr 
218c0 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73  blob, [MarshalAs
218d0 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
218e0 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20  PArray)] byte[] 
218f0 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e  buffer, int coun
21900 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d  t, int offset);.
21910 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21920 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21930 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21940 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21950 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21960 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21970 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21980 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21990 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
219a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
219b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
219c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
219d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
219e0 5f 72 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62  _reopen(IntPtr b
219f0 6c 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29  lob, long rowId)
21a00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21a10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21a20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21a30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21a40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21a50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21a60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21a70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21a80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21a90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21aa0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21ab0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21ac0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
21ad0 6f 62 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20  ob_write(IntPtr 
21ae0 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73  blob, [MarshalAs
21af0 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
21b00 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20  PArray)] byte[] 
21b10 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e  buffer, int coun
21b20 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d  t, int offset);.
21b30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21b40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21b50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21b60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21b70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21b80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21b90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21ba0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21bb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21bc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21bd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21be0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21bf0 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  ode sqlite3_decl
21c00 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20  are_vtab(IntPtr 
21c10 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29  db, IntPtr zSQL)
21c20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21c40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21c50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21c60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21c70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21c80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21c90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21ca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21cb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21cc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21cd0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
21ce0 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74  ite3_mprintf(Int
21cf0 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72  Ptr format, __ar
21d00 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e  glist);..    #en
21d10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
21d20 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c  / SQLite API cal
21d30 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f 76  ls that are prov
21d40 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e  ided by "well-kn
21d50 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20  own" extensions 
21d60 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61 74  that may be stat
21d70 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c  ically..    // l
21d80 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20 53  inked with the S
21d90 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76  QLite core nativ
21da0 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e  e library curren
21db0 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20  tly in use...   
21dc0 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69   #region extensi
21dd0 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  on sqlite api ca
21de0 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  lls..    #region
21df0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
21e00 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
21e10 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
21e20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21e30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21e40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21e50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21e60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21e70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21e80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21e90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21ea0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21eb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21ec0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
21ed0 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
21ee0 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
21ef0 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
21f00 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
21f10 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
21f20 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
21f30 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
21f40 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
21f50 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
21f60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21f70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21f80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21f90 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21fa0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21fb0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21fc0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21fd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21fe0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21ff0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22000 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22010 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
22020 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64  dule(IntPtr pMod
22030 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
22040 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
22050 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
22060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220a0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
220b0 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f  session extensio
220c0 6e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 53  n..#if INTEROP_S
220d0 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e  ESSION_EXTENSION
220e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
220f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22100 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
22110 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
22120 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22130 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
22140 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22150 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 53 65  delegate int xSe
22160 73 73 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74 50  ssionFilter(IntP
22170 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
22180 74 72 20 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a 0d  tr pTblName);...
22190 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
221a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
221b0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
221c0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
221d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
221e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
221f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64  ..    internal d
22200 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 43 68  elegate SQLiteCh
22210 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 52  angeSetConflictR
22220 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e 43 6f  esult xSessionCo
22230 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 63 6f  nflict(IntPtr co
22240 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43 68 61  ntext, SQLiteCha
22250 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79  ngeSetConflictTy
22260 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74 72 20  pe type, IntPtr 
22270 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69  iterator);....#i
22280 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22290 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
222a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
222b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
222c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
222d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
222e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
222f0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
22300 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 49 6e 70  Code xSessionInp
22310 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ut(IntPtr contex
22320 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c  t, IntPtr pData,
22330 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 29 3b   ref int nData);
22340 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22350 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22360 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
22370 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
22380 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
22390 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
223a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
223b0 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  l delegate SQLit
223c0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73  eErrorCode xSess
223d0 69 6f 6e 4f 75 74 70 75 74 28 49 6e 74 50 74 72  ionOutput(IntPtr
223e0 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72   context, IntPtr
223f0 20 70 44 61 74 61 2c 20 69 6e 74 20 6e 44 61 74   pData, int nDat
22400 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  a);....    /////
22410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22450 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
22460 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22470 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22480 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22490 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
224a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
224b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
224c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
224d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
224e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
224f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22500 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
22510 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
22520 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61 74 65  e3session_create
22530 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
22540 5b 5d 20 64 62 4e 61 6d 65 2c 20 72 65 66 20 49  [] dbName, ref I
22550 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d  ntPtr session);.
22560 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22570 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22580 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22590 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
225a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
225b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
225c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
225d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
225e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
225f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22600 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22610 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
22620 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28 49  session_delete(I
22630 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d  ntPtr session);.
22640 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22650 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22660 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22690 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
226a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
226b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
226c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
226d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
226e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
226f0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73  ern int sqlite3s
22700 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e  ession_enable(In
22710 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e  tPtr session, in
22720 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
22730 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22740 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22750 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22760 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22770 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22780 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22790 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
227a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
227b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
227c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
227d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
227e0 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  nt sqlite3sessio
227f0 6e 5f 69 6e 64 69 72 65 63 74 28 49 6e 74 50 74  n_indirect(IntPt
22800 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 69  r session, int i
22810 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66  ndirect);....#if
22820 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22830 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22850 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22860 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22870 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22880 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22890 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
228a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
228b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
228c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
228d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
228e0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 61 74 74  lite3session_att
228f0 61 63 68 28 49 6e 74 50 74 72 20 73 65 73 73 69  ach(IntPtr sessi
22900 6f 6e 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  on, byte[] tblNa
22910 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
22920 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22930 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22940 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22950 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22960 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22970 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22980 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
229a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
229b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
229c0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
229d0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 74 61 62  lite3session_tab
229e0 6c 65 5f 66 69 6c 74 65 72 28 49 6e 74 50 74 72  le_filter(IntPtr
229f0 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69   session, xSessi
22a00 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72  onFilter xFilter
22a10 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  , IntPtr context
22a20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22a30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22a40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22a50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22a60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22a70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22a80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22a90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22aa0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22ab0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22ac0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22ad0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22ae0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65  orCode sqlite3se
22af0 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28  ssion_changeset(
22b00 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
22b10 72 65 66 20 69 6e 74 20 6e 43 68 61 6e 67 65 53  ref int nChangeS
22b20 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  et, ref IntPtr p
22b30 43 68 61 6e 67 65 53 65 74 29 3b 0a 0d 0a 23 69  ChangeSet);...#i
22b40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22b50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22b60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22b70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22b80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22b90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22ba0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
22bb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22bc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
22bd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
22be0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
22bf0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
22c00 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 69  qlite3session_di
22c10 66 66 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  ff(IntPtr sessio
22c20 6e 2c 20 62 79 74 65 5b 5d 20 66 72 6f 6d 44 62  n, byte[] fromDb
22c30 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
22c40 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
22c50 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66   errMsg);....#if
22c60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22c70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22c80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22c90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22ca0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22cb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22cc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22cd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22ce0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22cf0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22d00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
22d10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
22d20 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74  lite3session_pat
22d30 63 68 73 65 74 28 49 6e 74 50 74 72 20 73 65 73  chset(IntPtr ses
22d40 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 50  sion, ref int nP
22d50 61 74 63 68 53 65 74 2c 20 72 65 66 20 49 6e 74  atchSet, ref Int
22d60 50 74 72 20 70 50 61 74 63 68 53 65 74 29 3b 0d  Ptr pPatchSet);.
22d70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22d80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22d90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22da0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22db0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22dc0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22dd0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22de0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22df0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22e00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22e10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22e20 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73  ern int sqlite3s
22e30 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28 49  ession_isempty(I
22e40 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d  ntPtr session);.
22e50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22e60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22e70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22e80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22e90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22ea0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22eb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22ec0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22ee0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22ef0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22f00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
22f10 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
22f20 65 73 65 74 5f 73 74 61 72 74 28 72 65 66 20 49  eset_start(ref I
22f30 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
22f40 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20  int nChangeSet, 
22f50 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65  IntPtr pChangeSe
22f60 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
22f70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22f80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22f90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22fa0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22fb0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22fc0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22fd0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22fe0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22ff0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23000 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23010 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
23020 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
23030 68 61 6e 67 65 73 65 74 5f 6e 65 78 74 28 49 6e  hangeset_next(In
23040 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d  tPtr iterator);.
23050 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23060 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23070 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23080 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23090 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
230a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
230b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
230c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
230d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
230e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
230f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23100 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23110 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
23120 65 73 65 74 5f 6f 70 28 49 6e 74 50 74 72 20 69  eset_op(IntPtr i
23130 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74  terator, ref Int
23140 50 74 72 20 70 54 62 6c 4e 61 6d 65 2c 20 72 65  Ptr pTblName, re
23150 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20  f int nColumns, 
23160 72 65 66 20 53 51 4c 69 74 65 41 75 74 68 6f 72  ref SQLiteAuthor
23170 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 20 6f  izerActionCode o
23180 70 2c 20 72 65 66 20 69 6e 74 20 62 49 6e 64 69  p, ref int bIndi
23190 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rect);....#if !P
231a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
231b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
231c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
231d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
231e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
231f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23200 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23210 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23220 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23230 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23240 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
23250 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
23260 65 33 63 68 61 6e 67 65 73 65 74 5f 70 6b 28 49  e3changeset_pk(I
23270 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
23280 72 65 66 20 49 6e 74 50 74 72 20 70 50 72 69 6d  ref IntPtr pPrim
23290 61 72 79 4b 65 79 73 2c 20 72 65 66 20 69 6e 74  aryKeys, ref int
232a0 20 6e 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23   nColumns);....#
232b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
232c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
232d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
232e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
232f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23300 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23310 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23320 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23330 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23340 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23350 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23360 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23370 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
23380 5f 6f 6c 64 28 49 6e 74 50 74 72 20 69 74 65 72  _old(IntPtr iter
23390 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e  ator, int column
233a0 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74  Index, ref IntPt
233b0 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  r pValue);....#i
233c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
233d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
233e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
233f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23400 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23410 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23420 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23430 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23440 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23450 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23460 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23470 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23480 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
23490 6e 65 77 28 49 6e 74 50 74 72 20 69 74 65 72 61  new(IntPtr itera
234a0 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49  tor, int columnI
234b0 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72  ndex, ref IntPtr
234c0 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66   pValue);....#if
234d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
234e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
234f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23500 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
23510 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
23520 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23530 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
23540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23550 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
23560 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
23570 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
23580 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
23590 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63  lite3changeset_c
235a0 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 69  onflict(IntPtr i
235b0 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c  terator, int col
235c0 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e  umnIndex, ref In
235d0 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d  tPtr pValue);...
235e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
235f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23600 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23610 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23620 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23630 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23640 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23650 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23660 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23670 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23680 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23690 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
236a0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
236b0 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28  et_fk_conflicts(
236c0 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
236d0 20 72 65 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63   ref int conflic
236e0 74 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ts);....#if !PLA
236f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23700 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23720 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23730 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23740 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23750 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23760 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23770 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23780 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23790 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
237a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
237b0 63 68 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69  changeset_finali
237c0 7a 65 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  ze(IntPtr iterat
237d0 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
237e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
237f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23800 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23810 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23820 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23830 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23840 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23850 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23860 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23870 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23880 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23890 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
238a0 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74  changeset_invert
238b0 28 69 6e 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72  (int nIn, IntPtr
238c0 20 70 49 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f   pIn, ref int nO
238d0 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ut, ref IntPtr p
238e0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
238f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23900 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23910 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23920 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23930 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23940 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23950 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23960 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23970 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23990 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
239a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
239b0 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61  3changeset_conca
239c0 74 28 69 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72  t(int nA, IntPtr
239d0 20 70 41 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74   pA, int nB, Int
239e0 50 74 72 20 70 42 2c 20 72 65 66 20 69 6e 74 20  Ptr pB, ref int 
239f0 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72  nOut, ref IntPtr
23a00 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   pOut);....#if !
23a10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23a20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23a30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23a40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23a50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23a60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23a70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23a80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23a90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23aa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23ab0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23ac0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23ad0 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e  te3changegroup_n
23ae0 65 77 28 72 65 66 20 49 6e 74 50 74 72 20 63 68  ew(ref IntPtr ch
23af0 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23  angeGroup);....#
23b00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23b10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23b20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23b30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23b40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23b50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23b60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23b70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23b80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23b90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23ba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23bb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23bc0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
23bd0 75 70 5f 61 64 64 28 49 6e 74 50 74 72 20 63 68  up_add(IntPtr ch
23be0 61 6e 67 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e  angeGroup, int n
23bf0 44 61 74 61 2c 20 49 6e 74 50 74 72 20 70 44 61  Data, IntPtr pDa
23c00 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ta);....#if !PLA
23c10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23c20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23c30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23c40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23c50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23c60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23c70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23c80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23c90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23ca0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23cb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23cc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
23cd0 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70  changegroup_outp
23ce0 75 74 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65  ut(IntPtr change
23cf0 47 72 6f 75 70 2c 20 72 65 66 20 69 6e 74 20 6e  Group, ref int n
23d00 44 61 74 61 2c 20 72 65 66 20 49 6e 74 50 74 72  Data, ref IntPtr
23d10 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20   pData);....#if 
23d20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23d30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23d40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23d50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23d60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23d70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23d80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23da0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23db0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23dc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
23dd0 64 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  d sqlite3changeg
23de0 72 6f 75 70 5f 64 65 6c 65 74 65 28 49 6e 74 50  roup_delete(IntP
23df0 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b  tr changeGroup);
23e00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23e10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23e20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23e30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23e40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23e50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23e60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23e70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23e80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23e90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23ea0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23eb0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23ec0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
23ed0 67 65 73 65 74 5f 61 70 70 6c 79 28 49 6e 74 50  geset_apply(IntP
23ee0 74 72 20 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e  tr db, int nChan
23ef0 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43  geSet, IntPtr pC
23f00 68 61 6e 67 65 53 65 74 2c 20 78 53 65 73 73 69  hangeSet, xSessi
23f10 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72  onFilter xFilter
23f20 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69  , xSessionConfli
23f30 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e  ct xConflict, In
23f40 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
23f50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23f60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23f70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23f80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23fa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23fb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23fc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23fd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23fe0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23ff0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24000 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
24010 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
24020 73 65 74 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49  set_apply_strm(I
24030 6e 74 50 74 72 20 64 62 2c 20 78 53 65 73 73 69  ntPtr db, xSessi
24040 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
24050 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73  IntPtr pIn, xSes
24060 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
24070 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66  er, xSessionConf
24080 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20  lict xConflict, 
24090 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
240a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
240b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
240c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
240d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
240e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
240f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24100 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24110 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24120 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24130 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24140 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24150 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24160 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
24170 67 65 73 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72  geset_concat_str
24180 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  m(xSessionInput 
24190 78 49 6e 70 75 74 41 2c 20 49 6e 74 50 74 72 20  xInputA, IntPtr 
241a0 70 49 6e 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e  pInA, xSessionIn
241b0 70 75 74 20 78 49 6e 70 75 74 42 2c 20 49 6e 74  put xInputB, Int
241c0 50 74 72 20 70 49 6e 42 2c 20 78 53 65 73 73 69  Ptr pInB, xSessi
241d0 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
241e0 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
241f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24200 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24210 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24220 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24230 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24240 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24250 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24260 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24270 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24280 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24290 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
242a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
242b0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
242c0 65 73 65 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d  eset_invert_strm
242d0 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78  (xSessionInput x
242e0 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49  Input, IntPtr pI
242f0 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  n, xSessionOutpu
24300 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
24310 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
24320 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24330 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24340 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24350 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24360 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24370 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24380 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24390 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
243a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
243b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
243c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
243d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
243e0 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74  ite3changeset_st
243f0 61 72 74 5f 73 74 72 6d 28 72 65 66 20 49 6e 74  art_strm(ref Int
24400 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 78 53  Ptr iterator, xS
24410 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
24420 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 29 3b  ut, IntPtr pIn);
24430 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24450 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24470 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24480 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24490 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
244a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
244b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
244c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
244d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
244e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
244f0 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
24500 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 5f 73 74  ion_changeset_st
24510 72 6d 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  rm(IntPtr sessio
24520 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  n, xSessionOutpu
24530 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
24540 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
24550 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24560 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24570 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24580 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24590 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
245a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
245b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
245c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
245d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
245e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
245f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24600 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24610 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63  ite3session_patc
24620 68 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72  hset_strm(IntPtr
24630 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69   session, xSessi
24640 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
24650 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
24660 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24670 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24680 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24690 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
246a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
246b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
246c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
246d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
246e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
246f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24700 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24710 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24720 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
24730 65 67 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28  egroup_add_strm(
24740 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
24750 75 70 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  up, xSessionInpu
24760 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72  t xInput, IntPtr
24770 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50   pIn);....#if !P
24780 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24790 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
247a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
247b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
247c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
247d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
247e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
247f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24800 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
24810 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24820 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24830 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24840 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75  e3changegroup_ou
24850 74 70 75 74 5f 73 74 72 6d 28 49 6e 74 50 74 72  tput_strm(IntPtr
24860 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 78 53   changeGroup, xS
24870 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75  essionOutput xOu
24880 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75  tput, IntPtr pOu
24890 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
248a0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
248b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
248c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
248d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24910 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71  ..    #region sq
24920 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69  lite interop api
24930 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d   calls (.NET Com
24940 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f  pact Framework o
24950 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f  nly)..#if PLATFO
24960 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24970 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
24980 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c  TANDARD..    [Dl
24990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
249a0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
249b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
249c0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61   void sqlite3_la
249d0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f  st_insert_rowid_
249e0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
249f0 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49  b, ref long rowI
24a00 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
24a10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24a20 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
24a30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
24a40 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
24a50 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28  ry_used_interop(
24a60 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b  ref long bytes);
24a70 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
24a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24a90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24aa0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
24ab0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
24ac0 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
24ad0 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
24ae0 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
24af0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
24b00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24b10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24b20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24b30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24b40 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
24b50 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
24b60 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
24b70 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
24b80 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
24b90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24ba0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
24bb0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24bc0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24bd0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
24be0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
24bf0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
24c00 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
24c10 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
24c20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24c30 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
24c40 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
24c50 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20  4_interop")]..  
24c60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24c70 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
24c80 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
24c90 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74  _bind_uint64_int
24ca0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
24cb0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
24cc0 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
24cd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24ce0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
24cf0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24d00 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
24d10 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
24d20 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
24d30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
24d40 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
24d50 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
24d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24d70 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
24d80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24d90 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
24da0 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74  column_int64_int
24db0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
24dc0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
24dd0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
24de0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24df0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
24e00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24e10 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
24e20 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
24e30 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
24e40 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  r p, ref double 
24e50 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
24e60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24e70 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
24e80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24e90 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
24ea0 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
24eb0 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
24ec0 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
24ed0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
24ee0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24ef0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24f00 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
24f10 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
24f20 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
24f30 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
24f40 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
24f50 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
24f60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24f70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24f80 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
24f90 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
24fa0 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
24fb0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
24fc0 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
24fd0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
24fe0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24ff0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25000 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
25010 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
25020 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
25030 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
25040 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
25050 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74  IntPtr name, Int
25060 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74  Ptr pModule, int
25070 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61   iVersion, xCrea
25080 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  te xCreate,..   
25090 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43       xConnect xC
250a0 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64  onnect, xBestInd
250b0 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78  ex xBestIndex, x
250c0 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
250d0 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20  onnect,..       
250e0 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
250f0 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c  oy, xOpen xOpen,
25100 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20   xClose xClose, 
25110 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  xFilter xFilter,
25120 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74 20  ..        xNext 
25130 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66  xNext, xEof xEof
25140 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  , xColumn xColum
25150 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  n, xRowId xRowId
25160 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  , xUpdate xUpdat
25170 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67  e,..        xBeg
25180 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63  in xBegin, xSync
25190 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20   xSync, xCommit 
251a0 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61  xCommit, xRollba
251b0 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20  ck xRollback,.. 
251c0 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
251d0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
251e0 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  on, xRename xRen
251f0 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20  ame, xSavepoint 
25200 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20  xSavepoint,..   
25210 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78 52       xRelease xR
25220 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63  elease, xRollbac
25230 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c  kTo xRollbackTo,
25240 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
25250 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ata,..        xD
25260 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65  estroyModule xDe
25270 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23  stroyModule);..#
25280 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c  endif..    // PL
25290 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
252a0 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
252b0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
252c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
252d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25320 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
25330 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a  tive Delegates..
25340 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
25350 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
25360 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25370 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25380 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
25390 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
253a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
253b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
253c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
253d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
253e0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
253f0 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
25400 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
25410 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ux,..        int
25420 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
25430 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
25440 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
25450 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
25460 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
25470 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
25480 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
254d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
254e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
254f0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
25500 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
25510 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25520 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
25530 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
25540 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
25550 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d  rCode xConnect(.
25560 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
25570 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
25580 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
25590 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
255a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
255b0 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
255c0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
255d0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
255e0 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
255f0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
25600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25640 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
25650 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25660 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
25670 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
25680 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
25690 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
256a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
256b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
256c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
256d0 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
256e0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
256f0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
25700 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a  pIndex..    );..
25710 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25760 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
25770 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25780 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
25790 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
257a0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
257b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
257c0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
257d0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
257e0 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f  ErrorCode xDisco
257f0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
25800 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
25810 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
25820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25860 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
25870 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25880 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25890 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
258a0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
258b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
258c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
258d0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
258e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
258f0 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
25900 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
25910 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
25920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
25970 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25980 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25990 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
259a0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
259b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
259c0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
259d0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
259e0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
259f0 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
25a00 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
25a10 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
25a20 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
25a30 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
25a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
25a90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25aa0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25ab0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
25ac0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
25ad0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25ae0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25af0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
25b00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25b10 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
25b20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
25b30 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
25b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
25b90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25ba0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25bb0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
25bc0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
25bd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25be0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
25bf0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
25c00 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
25c10 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
25c20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
25c30 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  sor,..        in
25c40 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
25c50 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72     IntPtr idxStr
25c60 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
25c70 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
25c80 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29  tPtr argv..    )
25c90 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
25ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ce0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
25cf0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25d00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
25d10 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
25d20 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
25d30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25d40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
25d50 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
25d60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65  iteErrorCode xNe
25d70 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  xt(..        Int
25d80 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
25d90 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
25da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25de0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
25df0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25e00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
25e10 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
25e20 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
25e30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25e40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
25e50 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
25e60 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
25e70 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
25e80 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
25e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
25ee0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25ef0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25f00 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
25f10 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
25f20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25f30 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
25f40 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
25f50 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
25f60 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
25f70 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
25f80 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49  rsor,..        I
25f90 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
25fa0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64  .        int ind
25fb0 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
25fc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26010 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26020 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26030 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26040 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26050 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26060 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26070 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
26080 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
26090 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20  rCode xRowId(.. 
260a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
260b0 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
260c0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
260d0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
260e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26120 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
26130 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
26140 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26150 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
26160 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
26170 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
26180 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
26190 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
261a0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
261b0 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  e xUpdate(..    
261c0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
261d0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
261e0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
261f0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
26200 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
26210 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
26220 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26270 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26280 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26290 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
262a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
262b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
262c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
262d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
262e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
262f0 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
26300 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
26310 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
26320 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26370 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26380 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26390 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
263a0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
263b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
263c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
263d0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
263e0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
263f0 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
26400 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
26410 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
26420 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26470 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26480 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26490 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
264a0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
264b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
264c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
264d0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
264e0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
264f0 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d  orCode xCommit(.
26500 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26510 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
26520 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
26530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26570 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26580 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26590 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
265a0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
265b0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
265c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
265d0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
265e0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
265f0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
26600 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ck(..        Int
26610 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
26620 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26670 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
26680 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26690 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
266a0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
266b0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
266c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
266d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
266e0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
266f0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d   xFindFunction(.
26700 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26710 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
26720 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20  int nArg,..     
26730 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c     IntPtr zName,
26740 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53 51  ..        ref SQ
26750 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c  LiteCallback cal
26760 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
26770 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65 72  ref IntPtr pUser
26780 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Data..    );....
26790 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
267a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
267e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
267f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26800 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26810 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26820 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26830 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26840 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26850 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26860 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28  rorCode xRename(
26870 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
26880 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
26890 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20   IntPtr zNew..  
268a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
268b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
26900 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26910 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26920 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
26930 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
26940 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26950 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26960 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
26970 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26980 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
26990 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
269a0 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
269b0 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
269c0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
269d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a10 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
26a20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26a30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26a40 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26a50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26a60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26a70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26a80 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
26a90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
26aa0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
26ab0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
26ac0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
26ad0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
26ae0 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b30 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
26b40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26b50 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
26b60 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
26b70 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
26b80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26b90 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
26ba0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
26bb0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
26bc0 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
26bd0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26be0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
26bf0 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
26c00 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26c60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26c70 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
26c80 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
26c90 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
26ca0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
26cb0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
26cc0 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44  delegate void xD
26cd0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74  estroyModule(Int
26ce0 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29  Ptr pClientData)
26cf0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
26d00 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
26d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26d60 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
26d70 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23  ve Structures..#
26d80 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
26d90 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53  AL_TABLE..    [S
26da0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
26db0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
26dc0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
26dd0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
26de0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a  _module..    {..
26df0 20 20 20 20 20 20 20 20 2f 2a 20 20 20 30 20 2a          /*   0 *
26e00 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65  / public int iVe
26e10 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  rsion;..        
26e20 2f 2a 20 20 20 38 20 2a 2f 20 70 75 62 6c 69 63  /*   8 */ public
26e30 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
26e40 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 31  ;..        /*  1
26e50 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f 6e  6 */ public xCon
26e60 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a  nect xConnect;..
26e70 20 20 20 20 20 20 20 20 2f 2a 20 20 32 34 20 2a          /*  24 *
26e80 2f 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e  / public xBestIn
26e90 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d  dex xBestIndex;.
26ea0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 33 32 20  .        /*  32 
26eb0 2a 2f 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f  */ public xDisco
26ec0 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
26ed0 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  t;..        /*  
26ee0 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 44 65  40 */ public xDe
26ef0 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d  stroy xDestroy;.
26f00 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34 38 20  .        /*  48 
26f10 2a 2f 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20  */ public xOpen 
26f20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  xOpen;..        
26f30 2f 2a 20 20 35 36 20 2a 2f 20 70 75 62 6c 69 63  /*  56 */ public
26f40 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d   xClose xClose;.
26f50 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 36 34 20  .        /*  64 
26f60 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65  */ public xFilte
26f70 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20  r xFilter;..    
26f80 20 20 20 20 2f 2a 20 20 37 32 20 2a 2f 20 70 75      /*  72 */ pu
26f90 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74  blic xNext xNext
26fa0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38  ;..        /*  8
26fb0 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 45 6f 66  0 */ public xEof
26fc0 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20   xEof;..        
26fd0 2f 2a 20 20 38 38 20 2a 2f 20 70 75 62 6c 69 63  /*  88 */ public
26fe0 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e   xColumn xColumn
26ff0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 39  ;..        /*  9
27000 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f 77  6 */ public xRow
27010 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20  Id xRowId;..    
27020 20 20 20 20 2f 2a 20 31 30 34 20 2a 2f 20 70 75      /* 104 */ pu
27030 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70  blic xUpdate xUp
27040 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  date;..        /
27050 2a 20 31 31 32 20 2a 2f 20 70 75 62 6c 69 63 20  * 112 */ public 
27060 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a  xBegin xBegin;..
27070 20 20 20 20 20 20 20 20 2f 2a 20 31 32 30 20 2a          /* 120 *
27080 2f 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78  / public xSync x
27090 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 2f  Sync;..        /
270a0 2a 20 31 32 38 20 2a 2f 20 70 75 62 6c 69 63 20  * 128 */ public 
270b0 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b  xCommit xCommit;
270c0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 33 36  ..        /* 136
270d0 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c   */ public xRoll
270e0 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d  back xRollback;.
270f0 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 34 34 20  .        /* 144 
27100 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46  */ public xFindF
27110 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
27120 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  ction;..        
27130 2f 2a 20 31 35 32 20 2a 2f 20 70 75 62 6c 69 63  /* 152 */ public
27140 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
27150 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68  ;..        /* Th
27160 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
27170 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31  are in version 1
27180 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
27190 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
271a0 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73   * object.  Thos
271b0 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20  e below are for 
271c0 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72  version 2 and gr
271d0 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20  eater. */..     
271e0 20 20 20 2f 2a 20 31 36 30 20 2a 2f 20 70 75 62     /* 160 */ pub
271f0 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78  lic xSavepoint x
27200 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20  Savepoint;..    
27210 20 20 20 20 2f 2a 20 31 36 38 20 2a 2f 20 70 75      /* 168 */ pu
27220 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52  blic xRelease xR
27230 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20  elease;..       
27240 20 2f 2a 20 31 37 36 20 2a 2f 20 70 75 62 6c 69   /* 176 */ publi
27250 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52  c xRollbackTo xR
27260 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20  ollbackTo;..    
27270 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
27280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
272d0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
272e0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
272f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
27300 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
27310 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  tab..    {..    
27320 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62      /*  0 */ pub
27330 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75  lic IntPtr pModu
27340 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  le;..        /* 
27350 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   8 */ public int
27360 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e   nRef; /* NO LON
27370 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  GER USED */..   
27380 20 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75       /* 16 */ pu
27390 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72  blic IntPtr zErr
273a0 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  Msg;..    }.... 
273b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
273c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27400 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
27410 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
27420 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
27430 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
27440 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
27450 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  rsor..    {..   
27460 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62       /* 0 */ pub
27470 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54 61 62  lic IntPtr pVTab
27480 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
27490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
274e0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
274f0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
27500 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
27510 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
27520 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
27530 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20  traint..    {.. 
27540 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
27550 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
27560 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  traint(..       
27570 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
27580 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74  Constraint const
27590 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  raint..         
275a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
275b0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
275c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
275d0 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
275e0 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t != null)..    
275f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27600 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75             iColu
27610 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  mn = constraint.
27620 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
27630 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63            op = c
27640 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20  onstraint.op;.. 
27650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
27660 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69  sable = constrai
27670 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20  nt.usable;..    
27680 20 20 20 20 20 20 20 20 20 20 20 20 69 54 65 72              iTer
27690 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72  mOffset = constr
276a0 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74  aint.iTermOffset
276b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
276c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
276d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
276e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27720 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a  ..        /* 0 *
27730 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f  / public int iCo
27740 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lumn;..        /
27750 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20 53 51  * 4 */ public SQ
27760 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
27770 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20  intOp op;..     
27780 20 20 20 2f 2a 20 35 20 2a 2f 20 70 75 62 6c 69     /* 5 */ publi
27790 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a  c byte usable;..
277a0 20 20 20 20 20 20 20 20 2f 2a 20 38 20 2a 2f 20          /* 8 */ 
277b0 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d  public int iTerm
277c0 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a  Offset;..    }..
277d0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
277e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27820 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
27830 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
27840 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
27850 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
27860 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
27870 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b  x_orderby..    {
27880 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
27890 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
278a0 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20  rderby(..       
278b0 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
278c0 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d  OrderBy orderBy.
278d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
278e0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
278f0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
27900 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
27910 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c  (orderBy != null
27920 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27940 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65    iColumn = orde
27950 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  rBy.iColumn;..  
27960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
27970 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73  sc = orderBy.des
27980 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c;..            
27990 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
279a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
279b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
279f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20  ...        /* 0 
27a00 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43  */ public int iC
27a10 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e  olumn; /* Column
27a20 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20   number */..    
27a30 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c      /* 4 */ publ
27a40 69 63 20 62 79 74 65 20 64 65 73 63 3b 20 20 20  ic byte desc;   
27a50 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  /* True for DESC
27a60 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
27a70 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  . */..    }.... 
27a80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27ad0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
27ae0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
27af0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
27b00 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
27b10 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
27b20 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d  onstraint_usage.
27b30 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
27b40 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
27b50 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
27b60 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20  usage(..        
27b70 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
27b80 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 63  onstraintUsage c
27b90 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a  onstraintUsage..
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
27bb0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
27bc0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
27bd0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27be0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  constraintUsage 
27bf0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
27c00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27c10 20 20 20 20 20 20 20 20 20 61 72 67 76 49 6e 64           argvInd
27c20 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ex = constraintU
27c30 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d  sage.argvIndex;.
27c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c50 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69   omit = constrai
27c60 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20  ntUsage.omit;.. 
27c70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
27c80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27c90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27ce0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
27cf0 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69   argvIndex; /* i
27d00 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74  f >0, constraint
27d10 20 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76   is part of argv
27d20 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a   to xFilter */..
27d30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
27d40 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a  yte omit;     /*
27d50 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
27d60 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  est for this con
27d70 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
27d80 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
27d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27dd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
27de0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
27df0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
27e00 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
27e10 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
27e20 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b  ndex_info..    {
27e30 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70  ..        /* Inp
27e40 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
27e50 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20  /*  0 */ public 
27e60 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  int nConstraint;
27e70 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
27e80 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72  tries in aConstr
27e90 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
27ea0 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69 63   /*  8 */ public
27eb0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
27ec0 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  int;..        /*
27ed0 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e   16 */ public in
27ee0 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f  t nOrderBy;    /
27ef0 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72  * Number of entr
27f00 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20  ies in aOrderBy 
27f10 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 32  */..        /* 2
27f20 34 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50  4 */ public IntP
27f30 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20  tr aOrderBy;..  
27f40 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73        /* Outputs
27f50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
27f60 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74  32 */ public Int
27f70 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr aConstraintU
27f80 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  sage;..        /
27f90 2a 20 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 40 */ public i
27fa0 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20  nt idxNum;      
27fb0 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75       /* Number u
27fc0 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20  sed to identify 
27fd0 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  the index */..  
27fe0 20 20 20 20 20 20 2f 2a 20 34 38 20 2a 2f 20 70        /* 48 */ p
27ff0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78  ublic string idx
28000 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53  Str;        /* S
28010 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20  tring, possibly 
28020 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71  obtained from sq
28030 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d  lite3_malloc */.
28040 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 36 20 2a  .        /* 56 *
28050 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65  / public int nee
28060 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f  dToFreeIdxStr; /
28070 2a 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73  * Free idxStr us
28080 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65  ing sqlite3_free
28090 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20  () if true */.. 
280a0 20 20 20 20 20 20 20 2f 2a 20 36 30 20 2a 2f 20         /* 60 */ 
280b0 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72  public int order
280c0 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20  ByConsumed;  /* 
280d0 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69  True if output i
280e0 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65  s already ordere
280f0 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  d */..        /*
28100 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20 64 6f   64 */ public do
28110 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f  uble estimatedCo
28120 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  st; /* Estimated
28130 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
28140 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  his index */..  
28150 20 20 20 20 20 20 2f 2a 20 37 32 20 2a 2f 20 70        /* 72 */ p
28160 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d  ublic long estim
28170 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45  atedRows;   /* E
28180 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20  stimated number 
28190 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64  of rows returned
281a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
281b0 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c  80 */ public SQL
281c0 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64  iteIndexFlags id
281d0 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20  xFlags; /* Mask 
281e0 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f  of SQLITE_INDEX_
281f0 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d  SCAN_* flags */.
28200 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 38 20 2a  .        /* 88 *
28210 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f  / public long co
28220 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f  lUsed;         /
28230 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66  * Input: Mask of
28240 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79   columns used by
28250 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20   statement */.. 
28260 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
28270 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
28280 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
28290 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
282a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
282f0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
28300 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72  mework (only) Cr
28310 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61  iticalHandle Cla
28320 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ss..#if PLATFORM
28330 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28340 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  K..  internal ab
28350 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69  stract class Cri
28360 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44  ticalHandle : ID
28370 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
28380 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
28390 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20   _isClosed;..   
283a0 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74   protected IntPt
283b0 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  r handle;....   
283c0 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
283d0 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
283e0 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
283f0 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
28400 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
28410 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
28420 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
28430 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
28440 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
28450 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
28460 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
28470 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
28480 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
28490 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
284a0 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
284b0 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
284c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
284d0 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
284e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
284f0 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
28500 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28510 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
28520 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
28530 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
28540 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
28550 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
28560 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
28570 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
28580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
28590 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
285a0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
285b0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
285c0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
285d0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
285e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
285f0 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
28600 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
28610 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
28620 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
28630 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
28640 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
28650 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
28660 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
28670 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
28680 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
28690 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
286a0 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
286b0 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
286c0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
286d0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
286e0 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
286f0 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
28700 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
28710 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
28720 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
28730 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
28740 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
28750 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
28760 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
28770 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
28780 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
28790 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
287a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
287b0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
287c0 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
287d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
287e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28820 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28830 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
28840 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43  nnectionHandle C
28850 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e  lass..    // Han
28860 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67  dles the unmanag
28870 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e  ed database poin
28880 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65  ter, and provide
28890 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a  s finalization..
288a0 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66      // support f
288b0 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65  or it...    inte
288c0 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
288d0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
288e0 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  onHandle : Criti
288f0 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
28900 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
28910 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f  NDARD && !PLATFO
28920 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28930 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
28940 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76  ernal delegate v
28950 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
28960 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  ionCallback(..  
28970 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
28980 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
28990 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29   hdl, IntPtr db)
289a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
289b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f  ernal static Clo
289c0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
289d0 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63  back closeConnec
289e0 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
289f0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
28a00 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d  loseConnection;.
28a10 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
28a20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
28a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
28a70 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
28a80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28a90 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
28aa0 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
28ab0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
28ac0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
28ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
28b30 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e  vate bool ownHan
28b40 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dle;....        
28b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
28ba0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
28bb0 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
28bc0 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
28bd0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
28be0 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d   db)..        {.
28bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
28c00 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  (db != null)..  
28c10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
28c20 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
28c30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28c40 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
28c50 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a   (db.syncRoot)..
28c60 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
28c70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28c90 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
28ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28cb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
28cc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28cd0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
28ce0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
28cf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
28d50 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e  ernal SQLiteConn
28d60 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
28d70 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e  Ptr db, bool own
28d80 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
28d90 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48       : this(ownH
28da0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
28db0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
28dc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
28dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
28de0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
28df0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
28e00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28e10 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61        this.ownHa
28e20 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65  ndle = ownHandle
28e30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
28e40 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
28e50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
28e60 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
28e70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
28e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28ec0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
28ed0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
28ee0 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77  onHandle(bool ow
28ef0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
28f00 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
28f10 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
28f20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
28f30 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
28f40 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c      if (ownHandl
28f50 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
28f60 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
28f70 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
28f80 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
28f90 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
28fa0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
28fb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29000 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
29010 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
29020 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
29030 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
29040 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
29050 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29060 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
29070 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
29080 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
29090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
290a0 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
290b0 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
290c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
290d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
290e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
290f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
29100 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29120 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
29130 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
29140 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29160 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
29170 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
29180 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
29190 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
291a0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
291b0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
291c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
291d0 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
291e0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
291f0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
29200 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
29210 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
29220 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
29230 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
29240 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
29250 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
29260 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
29270 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
29280 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
29290 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
292a0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
292b0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
292c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
292d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292e0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
292f0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
29300 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
29310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29320 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
29330 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
29340 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
29360 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
29370 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
29380 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
29390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
293a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
293b0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
293c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
293d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
293e0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
293f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29400 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
29410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29420 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29430 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
29440 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
29450 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
29460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29480 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
29490 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
294a0 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
294b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294c0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
294d0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
294e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29500 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
29510 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
29520 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
29530 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
29540 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
29550 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
29560 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
29570 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
29580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29590 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
295a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
295b0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
295c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
295d0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
295e0 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
295f0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
29600 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
29610 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
29620 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
29630 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
29640 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
29650 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
29660 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
29670 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
29680 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296a0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
296b0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
296c0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
296d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296e0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
296f0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
29700 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
29710 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
29720 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
29730 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
29740 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
29760 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
29770 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
29780 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29790 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
297a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
297b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
297c0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
297d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
297e0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
297f0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
29800 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
29810 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29830 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
29840 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
29850 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29870 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
29880 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
29890 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
298a0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
298b0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
298c0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
298d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
298e0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
298f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
29900 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
29910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29950 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
29960 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
29970 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
29980 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
29990 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
299a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
299b0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
299c0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
299d0 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
299e0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
299f0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
29a00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29a50 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
29a60 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20   OwnHandle..    
29a70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29a80 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
29a90 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
29aa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29ab0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
29ac0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
29ad0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
29af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29b00 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e        return own
29b10 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
29b20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29b30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29b40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
29b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
29ba0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
29bb0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
29bc0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
29bd0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
29be0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
29bf0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
29c00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29c10 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
29c20 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
29c30 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
29c40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29c50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29c60 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
29c70 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
29c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29ca0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29cb0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29d00 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
29d10 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
29d20 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
29d30 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
29d40 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
29d50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
29d60 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
29d70 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
29d80 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
29d90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29da0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
29db0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
29dc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29dd0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
29de0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
29df0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
29e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29e50 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
29e60 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43  tatementHandle C
29e70 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
29e80 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
29e90 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
29ea0 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
29eb0 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20  statements...   
29ec0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
29ed0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61   class SQLiteSta
29ee0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43  tementHandle : C
29ef0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
29f00 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
29f10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29f20 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
29f30 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
29f40 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
29f50 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
29f60 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
29f70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29fc0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
29fd0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
29fe0 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
29ff0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a040 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
2a050 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
2a060 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
2a070 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
2a080 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  dle stmt)..     
2a090 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a0a0 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75    if (stmt != nu
2a0b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a0c0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2a0d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2a0e0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2a0f0 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79     lock (stmt.sy
2a100 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2a110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a120 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a130 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
2a140 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  tmt.handle;..   
2a150 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a160 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a170 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a180 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
2a190 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a1a0 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a1f0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2a200 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
2a210 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
2a220 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2a230 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d  n, IntPtr stmt).
2a240 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
2a250 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
2a260 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2a270 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a280 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2a290 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2a2a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2a2b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a2c0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
2a2d0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
2a2e0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
2a2f0 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  stmt);..        
2a300 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2a310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a360 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2a370 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61  rivate SQLiteSta
2a380 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a  tementHandle()..
2a390 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
2a3a0 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
2a3b0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2a3c0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2a3d0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2a3e0 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
2a3f0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
2a400 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
2a410 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2a420 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a470 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a480 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
2a490 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
2a4a0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
2a4b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a4c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2a4d0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
2a4e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a4f0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a500 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
2a510 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
2a520 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
2a530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a540 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
2a550 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
2a560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a570 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
2a580 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2a590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a5a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2a5b0 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
2a5c0 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
2a5d0 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
2a5e0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2a5f0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a610 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a620 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a630 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2a640 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2a650 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2a660 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2a680 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2a690 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6b0 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
2a6c0 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
2a6d0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
2a6e0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2a6f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a700 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2a710 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2a720 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a730 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2a740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2a750 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2a760 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
2a770 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a790 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
2a7a0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2a7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a7d0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2a7e0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
2a7f0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
2a800 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
2a810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a820 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
2a830 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
2a840 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a860 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
2a870 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2a880 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2a890 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
2a8a0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
2a8b0 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
2a8c0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
2a8d0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
2a8e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2a8f0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2a900 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
2a910 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2a920 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2a930 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2a940 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
2a950 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
2a960 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2a970 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2a980 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2a990 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
2a9a0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2a9b0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2a9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2a9d0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2a9e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a9f0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2aa00 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2aa10 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2aa20 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2aa30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa40 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2aa50 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa70 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
2aa80 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
2aa90 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
2aaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aab0 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
2aac0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
2aad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2aae0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2aaf0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2ab00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ab10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ab20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2ab30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ab40 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
2ab50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2ab60 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2ab70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2ab80 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2ab90 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2aba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2abb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2abc0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2abd0 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
2abe0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2abf0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2ac00 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ac20 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
2ac30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2ac40 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
2ac50 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
2ac60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acb0 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
2acc0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
2acd0 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
2ace0 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
2acf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2ad00 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
2ad10 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
2ad20 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
2ad30 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
2ad40 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2ad50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2ad60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ada0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
2adb0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
2adc0 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
2add0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ade0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2adf0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2ae00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2ae10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2ae20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2ae30 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2ae40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ae60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2ae70 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
2ae80 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
2ae90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2aea0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2aeb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af00 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
2af10 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
2af20 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
2af30 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
2af40 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2af50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2af60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2af70 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2af80 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2af90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2afb0 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
2afc0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
2afd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2afe0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2aff0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
2b000 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2b060 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
2b070 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
2b080 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
2b090 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
2b0a0 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
2b0b0 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
2b0c0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
2b0d0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
2b0e0 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
2b0f0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
2b100 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
2b110 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2b120 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b130 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
2b140 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
2b150 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
2b160 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
2b170 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2b1d0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
2b1e0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
2b1f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b250 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
2b260 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
2b270 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
2b280 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
2b290 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2b2a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
2b2b0 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
2b2c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2b2d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2b2e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2b300 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
2b310 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2b320 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b340 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
2b350 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
2b360 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b370 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b380 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b390 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
2b3a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b3b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b400 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
2b410 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
2b420 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
2b430 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
2b440 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
2b450 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
2b460 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2b470 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2b480 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b490 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2b4a0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2b4b0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2b4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b4d0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
2b4e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b4f0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
2b500 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
2b510 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2b520 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2b580 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
2b590 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
2b5a0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
2b5b0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2b5c0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
2b5d0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2b5e0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2b5f0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
2b600 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
2b610 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
2b620 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2b630 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b680 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2b690 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
2b6a0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
2b6b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2b6c0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2b6d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2b6e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2b6f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2b700 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2b710 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
2b720 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
2b730 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
2b740 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
2b750 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
2b760 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
2b770 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
2b780 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
2b790 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2b7b0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
2b7c0 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61  Backup(cnn, loca
2b7d0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
2b7e0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2b7f0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2b800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b810 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2b820 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2b840 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
2b850 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
2b860 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
2b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b880 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2b890 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b8b0 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
2b8c0 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
2b8d0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
2b8e0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2b8f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b900 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2b910 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2b920 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b930 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2b940 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2b950 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2b960 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
2b970 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b990 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
2b9a0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2b9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b9d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2b9e0 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
2b9f0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
2ba00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ba10 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
2ba20 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
2ba30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2ba40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ba50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2ba60 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
2ba70 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2ba80 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
2ba90 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
2baa0 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
2bab0 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
2bac0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2bae0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
2baf0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
2bb00 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2bb10 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
2bb20 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2bb30 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2bb40 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
2bb50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2bb60 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2bb70 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
2bb80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2bb90 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2bba0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2bbb0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2bbc0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2bbd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbf0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2bc00 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2bc10 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc30 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2bc40 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2bc50 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
2bc70 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
2bc80 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
2bc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bca0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
2bcb0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
2bcc0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2bcd0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2bce0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bd00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd10 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2bd20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2bd30 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2bd50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2bd60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2bd80 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2bd90 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2bda0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2bdc0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
2bdd0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2bde0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2bdf0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
2be00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2be10 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
2be20 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2be30 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2be40 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2be50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bea0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
2beb0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2bec0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
2bed0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
2bee0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2bef0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
2bf00 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2bf10 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
2bf20 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
2bf30 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2bf40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2bfa0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
2bfb0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
2bfc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2bfd0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
2bfe0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2bff0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c000 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2c010 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2c020 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c050 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
2c060 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
2c070 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
2c080 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c090 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c0a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
2c100 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
2c110 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
2c120 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
2c130 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2c140 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c150 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2c160 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2c170 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2c180 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c1a0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
2c1b0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
2c1c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2c1d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
2c1e0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2c1f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c240 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
2c250 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  on SQLiteBlobHan
2c260 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
2c270 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
2c280 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
2c290 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
2c2a0 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74  Lite blob object
2c2b0 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
2c2c0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
2c2d0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a  LiteBlobHandle :
2c2e0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2c2f0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
2c300 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c310 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2c320 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
2c330 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2c340 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2c350 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2c360 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c3b0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2c3c0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2c3d0 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
2c3e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c430 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2c440 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2c450 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2c460 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
2c470 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20   blob)..        
2c480 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2c490 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29  f (blob != null)
2c4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c4b0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2c4c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4e0 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52  lock (blob.syncR
2c4f0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2c500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c520 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62       return blob
2c530 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
2c540 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2c550 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c560 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2c570 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2c580 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2c590 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c5e0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
2c5f0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53  LiteBlobHandle(S
2c600 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2c610 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
2c620 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20  r blob)..       
2c630 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
2c640 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2c650 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2c660 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2c670 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2c680 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2c690 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2c6b0 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
2c6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2c6d0 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a  tHandle(blob);..
2c6e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c6f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2c700 20 20 20 20 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 2f 2f  ////////////////
2c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c750 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2c760 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28  QLiteBlobHandle(
2c770 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2c780 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
2c790 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
2c7a0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2c7b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2c7c0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
2c7d0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
2c7e0 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65  .blobCount);..#e
2c7f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2c800 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c850 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2c860 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
2c870 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
2c880 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
2c890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
2c8a0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
2c8b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2c8c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2c8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c8e0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
2c8f0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
2c900 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
2c910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c920 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
2c930 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
2c940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2c950 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
2c960 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c980 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
2c990 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f  loseBlob(cnn, lo
2c9a0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
2c9b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2c9c0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2c9d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2c9e0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2c9f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca10 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2ca20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2ca30 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca50 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2ca60 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2ca70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ca80 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
2ca90 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  Blob: {0}", loca
2caa0 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
2cab0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2cac0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2cad0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2cae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2caf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cb00 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2cb10 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2cb20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2cb30 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
2cb40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2cb60 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
2cb70 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cb90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cba0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2cbb0 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
2cbc0 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
2cbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbe0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
2cbf0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
2cc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2cc20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2cc30 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2cc40 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2cc50 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
2cc60 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2cc70 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
2cc80 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
2cc90 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
2cca0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
2ccb0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
2ccc0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
2ccd0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
2cce0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
2ccf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
2cd00 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
2cd10 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
2cd20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2cd30 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
2cd40 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
2cd50 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
2cd60 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2cd70 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd90 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2cda0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cdb0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2cdc0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
2cdd0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
2cde0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce00 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
2ce10 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
2ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce30 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62        "CloseBlob
2ce40 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
2ce50 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
2ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce70 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
2ce80 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2ce90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2cea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2ceb0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
2cec0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ced0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2cee0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
2cef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
2cf00 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
2cf10 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2cf20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2cf30 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2cf40 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2cf50 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2cf70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cf80 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
2cf90 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
2cfa0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2cfb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
2cfc0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
2cfd0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2cfe0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
2cff0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
2d000 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
2d010 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2d020 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2d070 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2d080 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
2d090 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
2d0a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2d0b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d0c0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
2d0d0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2d0e0 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
2d0f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2d100 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2d110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d160 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2d170 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
2d180 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d190 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2d1a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2d1b0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2d1c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2d1d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2d1e0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2d1f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d200 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d210 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d220 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
2d230 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2d240 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2d250 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2d260 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2d270 20 20 20 20 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 2f 2f 2f 2f  ////////////////
2d290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2d2c0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2d2d0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2d2e0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
2d2f0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
2d300 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2d310 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2d320 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2d330 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2d340 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d360 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
2d370 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
2d380 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2d390 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2d3a0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
2d3b0 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..