System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 28002ab94b473439dfe59dcc7f265816b0640ea2:


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 51 75 65 72 69 65 73 20 74 68    /// Queries th
12e0: 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f  e read counts fo
12f0: 72 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f  r the runtime co
1300: 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74  nfiguration sett
1310: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
1320: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
1330: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
1340: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
1350: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
1360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1380: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1390: 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20  iaFile">..      
13a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
13b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
13c0: 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72  tting is being r
13d0: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
13e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
13f0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
1400: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
1410: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
1420: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1430: 2f 2f 2f 20 41 20 63 6f 70 79 20 6f 66 20 74 68  /// A copy of th
1440: 65 20 73 74 61 74 69 73 74 69 63 73 20 66 6f 72  e statistics for
1450: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72   the specified r
1460: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
1470: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
1480: 73 65 74 74 69 6e 67 73 20 2d 4f 52 2d 20 6e 75  settings -OR- nu
1490: 6c 6c 20 69 66 20 74 68 65 79 20 61 72 65 20 6e  ll if they are n
14a0: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
14b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
14c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ns>..      publi
14d0: 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  c static object 
14e0: 47 65 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f  GetSettingReadCo
14f0: 75 6e 74 73 28 0d 0a 20 20 20 20 20 20 20 20 20  unts(..         
1500: 20 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20   bool viaFile.. 
1510: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1520: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1530: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1540: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1560: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1570: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
15a0: 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e  eReadCounts == n
15b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15d0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15f0: 74 75 72 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e  turn new Diction
1600: 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e  ary<string, int>
1610: 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64  (settingFileRead
1620: 43 6f 75 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20  Counts);..      
1630: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1640: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
1650: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1670: 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65 61    if (settingRea
1680: 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29  dCounts == null)
1690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
16b0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
16c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16d0: 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
16e0: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 73 65 74  string, int>(set
16f0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 29 3b  tingReadCounts);
1700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1710: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
1720: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1780: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1790: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63  >..      /// Inc
17a0: 72 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64  rements the read
17b0: 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73   count for the s
17c0: 70 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65  pecified runtime
17d0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a   configuration..
17e0: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e        /// settin
17f0: 67 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72  g.  These number
1800: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64  s are used for d
1810: 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73  ebugging and tes
1820: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20  ting purposes.. 
1830: 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a       /// only...
1840: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1850: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1860: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
1870: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
1880: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73  he name of the s
1890: 65 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61  etting being rea
18a0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
18b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
18c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
18d0: 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20  iaFile">..      
18e0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
18f0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
1900: 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72  tting is being r
1910: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
1920: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
1930: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
1940: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
1950: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
1960: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  c static void In
1970: 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65  crementSettingRe
1980: 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20  adCount(..      
1990: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
19a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
19b0: 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20   viaFile..      
19c0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
19d0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
19e0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
19f0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a20: 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74   NOTE: Update st
1a30: 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68 69  atistics for thi
1a40: 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e  s setting value.
1a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a60: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1a70: 20 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a    if (viaFile)..
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aa0: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69     if (settingFi
1ab0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20  leReadCounts != 
1ac0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1ad0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af0: 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a    int count;....
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b10: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1b20: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e  gFileReadCounts.
1b30: 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65  TryGetValue(name
1b40: 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20  , out count)).. 
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b60: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
1b70: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e  FileReadCounts[n
1b80: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
1b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ba0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
1bd0: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41  FileReadCounts.A
1be0: 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20  dd(name, 1);..  
1bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c00: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1c10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c20: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
1c30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1c50: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1c60: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c90: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1ca0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1cb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1cc0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e  ttingReadCounts.
1cd0: 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65  TryGetValue(name
1ce0: 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20  , out count)).. 
1cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d00: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
1d10: 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  ReadCounts[name]
1d20: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d40: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d60: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1d70: 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c  Counts.Add(name,
1d80: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
1d90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1da0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1db0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1dc0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
1e20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1e30: 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73    /// Increments
1e40: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
1e50: 6f 75 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f  ounter...      /
1e60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e70: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e80: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
1e90: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
1ea0: 20 6f 66 20 74 68 65 20 63 6f 75 6e 74 65 72 20   of the counter 
1eb0: 62 65 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65  being incremente
1ec0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
1ed0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75  param>..      pu
1ee0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
1ef0: 20 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43   IncrementOtherC
1f00: 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ount(..         
1f10: 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20   string name..  
1f20: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1f30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f   {..          lo
1f40: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
1f50: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
1f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f70: 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 20  if (otherCounts 
1f80: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1f90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1fb0: 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20   count;....     
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1fd0: 28 6f 74 68 65 72 43 6f 75 6e 74 73 2e 54 72 79  (otherCounts.Try
1fe0: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f  GetValue(name, o
1ff0: 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20  ut count))..    
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2010: 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61    otherCounts[na
2020: 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b  me] = count + 1;
2030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2040: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
2050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2060: 6f 74 68 65 72 43 6f 75 6e 74 73 2e 41 64 64 28  otherCounts.Add(
2070: 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20  name, 1);..     
2080: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2090: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
20a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
20c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
20d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
2130: 65 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74  egion Helper Met
2140: 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73  hods Static Clas
2150: 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  s..  /// <summar
2160: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73  y>..  /// This s
2170: 74 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76  tatic class prov
2180: 69 64 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64  ides some method
2190: 73 20 74 68 61 74 20 61 72 65 20 73 68 61 72 65  s that are share
21a0: 64 20 62 65 74 77 65 65 6e 20 74 68 65 0d 0a 20  d between the.. 
21b0: 20 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62 72   /// native libr
21c0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 61  ary pre-loader a
21d0: 6e 64 20 6f 74 68 65 72 20 63 6c 61 73 73 65 73  nd other classes
21e0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
21f0: 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ry>..  internal 
2200: 73 74 61 74 69 63 20 63 6c 61 73 73 20 48 65 6c  static class Hel
2210: 70 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d  perMethods..  {.
2220: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
2230: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2240: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2250: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73  const string Dis
2260: 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 20 3d  playNullObject =
2270: 20 22 3c 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22 3b   "<nullObject>";
2280: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2290: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73  const string Dis
22a0: 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e 67 20  playEmptyString 
22b0: 3d 20 22 3c 65 6d 70 74 79 53 74 72 69 6e 67 3e  = "<emptyString>
22c0: 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ";..      privat
22d0: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44  e const string D
22e0: 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d  isplayStringForm
22f0: 61 74 20 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b 0d  at = "\"{0}\"";.
2300: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
2360: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2370: 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61   DisplayNullArra
2380: 79 20 3d 20 22 3c 6e 75 6c 6c 41 72 72 61 79 3e  y = "<nullArray>
2390: 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ";..      privat
23a0: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44  e const string D
23b0: 69 73 70 6c 61 79 45 6d 70 74 79 41 72 72 61 79  isplayEmptyArray
23c0: 20 3d 20 22 3c 65 6d 70 74 79 41 72 72 61 79 3e   = "<emptyArray>
23d0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
2430: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61  rivate const cha
2440: 72 20 41 72 72 61 79 4f 70 65 6e 20 3d 20 27 5b  r ArrayOpen = '[
2450: 27 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ';..      privat
2460: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45  e const string E
2470: 6c 65 6d 65 6e 74 53 65 70 61 72 61 74 6f 72 20  lementSeparator 
2480: 3d 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20 70  = ", ";..      p
2490: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61  rivate const cha
24a0: 72 20 41 72 72 61 79 43 6c 6f 73 65 20 3d 20 27  r ArrayClose = '
24b0: 5d 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2500: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2510: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
2520: 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53  eadonly char[] S
2530: 70 61 63 65 43 68 61 72 73 20 3d 20 7b 0d 0a 20  paceChars = {.. 
2540: 20 20 20 20 20 20 20 20 20 27 5c 74 27 2c 20 27           '\t', '
2550: 5c 6e 27 2c 20 27 5c 72 27 2c 20 27 5c 76 27 2c  \n', '\r', '\v',
2560: 20 27 5c 66 27 2c 20 27 20 27 0d 0a 20 20 20 20   '\f', ' '..    
2570: 20 20 7d 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    };..      #end
2580: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
25e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
25f0: 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f  te Data..      /
2600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2610: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
2620: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
2630: 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20  tect the static 
2640: 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e  <see cref="isMon
2650: 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20  o" /> field...  
2660: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2670: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
2680: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
2690: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
26a0: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
26b0: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
26c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2710: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2720: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
2730: 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72 65  type is only pre
2740: 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e  sent when runnin
2750: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
2760: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2770: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2780: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
2790: 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69  string MonoRunti
27a0: 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52  meType = "Mono.R
27b0: 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20  untime";....    
27c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2810: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2820: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
2830: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
2840: 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  er we are runnin
2850: 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74  g on Mono.  Init
2860: 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69  ially null, it i
2870: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  s..      /// set
2880: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
2890: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
28a0: 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73  thod on its firs
28b0: 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20  t call.  Later, 
28c0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73  it..      /// is
28d0: 20 72 65 74 75 72 6e 65 64 20 76 65 72 62 61 74   returned verbat
28e0: 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  im by the <see c
28f0: 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20  ref="IsMono" /> 
2900: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
2910: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2920: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2930: 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f  tic bool? isMono
2940: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
2950: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
29a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
29c0: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
29d0: 65 72 20 77 65 20 73 75 63 63 65 73 73 66 75 6c  er we successful
29e0: 6c 79 20 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a  ly invoked the..
29f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2a00: 72 65 66 3d 22 44 65 62 75 67 67 65 72 2e 42 72  ref="Debugger.Br
2a10: 65 61 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  eak" /> method. 
2a20: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
2a30: 20 69 74 20 69 73 20 73 65 74 20 62 79 0d 0a 20   it is set by.. 
2a40: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
2a50: 65 20 63 72 65 66 3d 22 4d 61 79 62 65 42 72 65  e cref="MaybeBre
2a60: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20  akIntoDebugger" 
2a70: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
2a80: 20 66 69 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20   first call...  
2a90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2aa0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
2ab0: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64  e static bool? d
2ac0: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e  ebuggerBreak = n
2ad0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ull;..      #end
2ae0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b40: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2b50: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
2b60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b70: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
2b80: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
2b90: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
2ba0: 65 73 73 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20  ess.  Only used 
2bb0: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a  for debugging...
2bc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2bd0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2be0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2bf0: 20 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74   /// The ID of t
2c00: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
2c10: 73 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  ss -OR- zero if 
2c20: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
2c30: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
2c40: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2c50: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2c60: 61 74 69 63 20 69 6e 74 20 47 65 74 50 72 6f 63  atic int GetProc
2c70: 65 73 73 49 64 28 29 0d 0a 20 20 20 20 20 20 7b  essId()..      {
2c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 72 6f 63  ..          Proc
2c90: 65 73 73 20 70 72 6f 63 65 73 73 20 3d 20 50 72  ess process = Pr
2ca0: 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74  ocess.GetCurrent
2cb0: 50 72 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20  Process();....  
2cc0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
2cd0: 65 73 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ess == null)..  
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cf0: 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rn 0;....       
2d00: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
2d10: 73 2e 49 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  s.Id;..      }..
2d20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
2d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d70: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
2d80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2d90: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
2da0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73  ther or not this
2db0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
2dc0: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
2dd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2de0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2df0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2e00: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
2e10: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73  this assembly is
2e20: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f   running on Mono
2e30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
2e40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
2e50: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2e60: 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20  ol IsMono()..   
2e70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e80: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
2e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ea0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2eb0: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2ec0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ed0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
2ee0: 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Mono == null).. 
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f00: 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54       isMono = (T
2f10: 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f  ype.GetType(Mono
2f20: 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20  RuntimeType) != 
2f30: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f50: 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b  rn (bool)isMono;
2f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
2f80: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2f90: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
2fa0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2fb0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2fc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2fd0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2fe0: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  e;..      }..   
2ff0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3000: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
3010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3050: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
3060: 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f  n Internal Metho
3070: 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ds..      /// <s
3080: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3090: 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61  // Resets the ca
30a0: 63 68 65 64 20 76 61 6c 75 65 20 66 6f 72 20 74  ched value for t
30b0: 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
30c0: 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67  e_BreakIntoDebug
30d0: 67 65 72 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ger"..      /// 
30e0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65  configuration se
30f0: 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tting...      //
3100: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3110: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3120: 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 42 72  tic void ResetBr
3130: 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 28  eakIntoDebugger(
3140: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
3150: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
3160: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
3170: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3180: 20 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72          debugger
3190: 42 72 65 61 6b 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  Break = null;.. 
31a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
31c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3200: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3210: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3220: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3230: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
3240: 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72  reakIntoDebugger
3250: 22 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  " configuration 
3260: 73 65 74 74 69 6e 67 20 69 73 0d 0a 20 20 20 20  setting is..    
3270: 20 20 2f 2f 2f 20 70 72 65 73 65 6e 74 20 28 65    /// present (e
3280: 2e 67 2e 20 76 69 61 20 74 68 65 20 65 6e 76 69  .g. via the envi
3290: 72 6f 6e 6d 65 6e 74 29 2c 20 67 69 76 65 20 74  ronment), give t
32a0: 68 65 20 69 6e 74 65 72 61 63 74 69 76 65 20 75  he interactive u
32b0: 73 65 72 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f  ser an..      //
32c0: 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f  / opportunity to
32d0: 20 61 74 74 61 63 68 20 61 20 64 65 62 75 67 67   attach a debugg
32e0: 65 72 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  er to the curren
32f0: 74 20 70 72 6f 63 65 73 73 3b 20 6f 74 68 65 72  t process; other
3300: 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
3310: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
3320: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3330: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3340: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 4d  al static void M
3350: 61 79 62 65 42 72 65 61 6b 49 6e 74 6f 44 65 62  aybeBreakIntoDeb
3360: 75 67 67 65 72 28 29 0d 0a 20 20 20 20 20 20 7b  ugger()..      {
3370: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
3380: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3390: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
33b0: 20 28 64 65 62 75 67 67 65 72 42 72 65 61 6b 20   (debuggerBreak 
33c0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33e0: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  rn;..          }
33f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
3400: 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65   (UnsafeNativeMe
3410: 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e 67  thods.GetSetting
3420: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
3430: 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
3440: 53 51 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f  SQLite_BreakInto
3450: 44 65 62 75 67 67 65 72 22 2c 20 6e 75 6c 6c 29  Debugger", null)
3460: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
3470: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3480: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3490: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
34a0: 20 41 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20   Attempt to use 
34b0: 74 68 65 20 43 6f 6e 73 6f 6c 65 20 69 6e 20 6f  the Console in o
34c0: 72 64 65 72 20 74 6f 20 70 72 6f 6d 70 74 20 74  rder to prompt t
34d0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
34e0: 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72    //       inter
34f0: 61 63 74 69 76 65 20 75 73 65 72 20 28 69 66 20  active user (if 
3500: 61 6e 79 29 2e 20 20 54 68 69 73 20 6d 61 79 20  any).  This may 
3510: 66 61 69 6c 20 66 6f 72 20 61 6e 79 0d 0a 20 20  fail for any..  
3520: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
3530: 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20 72       number of r
3540: 65 61 73 6f 6e 73 2e 20 20 45 76 65 6e 20 69 6e  easons.  Even in
3550: 20 74 68 6f 73 65 20 63 61 73 65 73 2c 20 77 65   those cases, we
3560: 20 73 74 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20   still..        
3570: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
3580: 61 6e 74 20 74 6f 20 69 73 73 75 65 20 74 68 65  ant to issue the
3590: 20 61 63 74 75 61 6c 20 72 65 71 75 65 73 74 20   actual request 
35a0: 74 6f 20 62 72 65 61 6b 20 69 6e 74 6f 20 74 68  to break into th
35b0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
35c0: 20 2f 2f 20 20 20 20 20 20 20 64 65 62 75 67 67   //       debugg
35d0: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
35e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
35f0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
3600: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3610: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
3620: 73 6f 6c 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  sole.WriteLine(S
3630: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3650: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
3660: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
3670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3680: 20 20 20 20 20 20 20 22 41 74 74 61 63 68 20 61         "Attach a
3690: 20 64 65 62 75 67 67 65 72 20 74 6f 20 70 72 6f   debugger to pro
36a0: 63 65 73 73 20 7b 30 7d 20 22 20 2b 0d 0a 20 20  cess {0} " +..  
36b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c0: 20 20 20 20 22 61 6e 64 20 70 72 65 73 73 20 61      "and press a
36d0: 6e 79 20 6b 65 79 20 74 6f 20 63 6f 6e 74 69 6e  ny key to contin
36e0: 75 65 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ue.",..         
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
3700: 50 72 6f 63 65 73 73 49 64 28 29 29 29 3b 0d 0a  ProcessId()));..
3710: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
3720: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
3730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3740: 20 20 20 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4c     Console.ReadL
3750: 69 6e 65 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ine();..#else.. 
3760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3770: 20 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79   Console.ReadKey
3780: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
3790: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
37a0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
37b0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
37c0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
37d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
37e0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
37f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
3800: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
3810: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
3820: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
3830: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
3840: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
3850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
3860: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
3870: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
3890: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
38a0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
38b0: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
38c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38d0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
38e0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
38f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3900: 20 20 20 20 20 20 20 20 20 20 20 20 22 46 61 69              "Fai
3910: 6c 65 64 20 74 6f 20 69 73 73 75 65 20 64 65 62  led to issue deb
3920: 75 67 67 65 72 20 70 72 6f 6d 70 74 2c 20 22 20  ugger prompt, " 
3930: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 7b 30               "{0
3950: 7d 20 6d 61 79 20 62 65 20 75 6e 75 73 61 62 6c  } may be unusabl
3960: 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3980: 20 20 20 20 74 79 70 65 6f 66 28 43 6f 6e 73 6f      typeof(Conso
3990: 6c 65 29 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  le), e)); /* thr
39a0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
39b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
39c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
39d0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
39e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
3a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a20: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
3a30: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
3a50: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
3a60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3a70: 20 20 20 20 20 20 44 65 62 75 67 67 65 72 2e 42        Debugger.B
3a80: 72 65 61 6b 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  reak();....     
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
3aa0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
3ab0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
3ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
3ae0: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 74  ebuggerBreak = t
3af0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
3b00: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3b10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
3b20: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
3b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b50: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
3b60: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b90: 20 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72        debuggerBr
3ba0: 65 61 6b 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  eak = false;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bc0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
3bd0: 20 20 20 20 20 20 20 74 68 72 6f 77 3b 0d 0a 20         throw;.. 
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3bf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c00: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
3c10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3c20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3c30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
3c40: 46 49 58 3a 20 54 68 65 72 65 20 69 73 20 28 61  FIX: There is (a
3c50: 6c 6d 6f 73 74 29 20 6e 6f 20 70 6f 69 6e 74 20  lmost) no point 
3c60: 69 6e 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20  in checking for 
3c70: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
3c80: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 61 73     //         as
3c90: 73 6f 63 69 61 74 65 64 20 63 6f 6e 66 69 67 75  sociated configu
3ca0: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 72  ration setting r
3cb0: 65 70 65 61 74 65 64 6c 79 2e 0d 0a 20 20 20 20  epeatedly...    
3cc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3cd0: 20 20 20 20 20 50 72 65 76 65 6e 74 20 74 68 61       Prevent tha
3ce0: 74 20 68 65 72 65 20 62 79 20 73 65 74 74 69 6e  t here by settin
3cf0: 67 20 74 68 65 20 63 61 63 68 65 64 20 76 61 6c  g the cached val
3d00: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
3d10: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 74 6f 20    //         to 
3d20: 66 61 6c 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  false...        
3d30: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3d40: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
3d50: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d80: 20 20 64 65 62 75 67 67 65 72 42 72 65 61 6b 20    debuggerBreak 
3d90: 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
3da0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3db0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
3dc0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
3e20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3e30: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
3e40: 69 66 20 70 72 65 70 61 72 69 6e 67 20 61 20 71  if preparing a q
3e50: 75 65 72 79 20 73 68 6f 75 6c 64 20 62 65 20 6c  uery should be l
3e60: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
3e70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3e80: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3e90: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
3ea0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
3eb0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
3ec0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
3ed0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
3ee0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
3ef0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
3f00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3f10: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
3f20: 74 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72  the query prepar
3f30: 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20  ation should be 
3f40: 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73  logged; otherwis
3f50: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
3f60: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3f70: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
3f80: 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50 72  tatic bool LogPr
3f90: 65 70 61 72 65 28 0d 0a 20 20 20 20 20 20 20 20  epare(..        
3fa0: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
3fb0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
3fc0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
3fd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66    {..          f
3fe0: 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f  lags &= SQLiteCo
3ff0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4000: 67 50 72 65 70 61 72 65 3b 0d 0a 20 20 20 20 20  gPrepare;..     
4010: 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61       return (fla
4020: 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs == SQLiteConn
4030: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50  ectionFlags.LogP
4040: 72 65 70 61 72 65 29 3b 0d 0a 20 20 20 20 20 20  repare);..      
4050: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40a0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
40b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
40c0: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
40d0: 69 66 20 70 72 65 2d 70 61 72 61 6d 65 74 65 72  if pre-parameter
40e0: 20 62 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20   binding should 
40f0: 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20  be logged...    
4100: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4110: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
4120: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4140: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
4150: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
4160: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
4170: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
4180: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
4190: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
41a0: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
41b0: 20 69 66 20 74 68 65 20 70 72 65 2d 70 61 72 61   if the pre-para
41c0: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
41d0: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
41e0: 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20  otherwise,..    
41f0: 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20    /// zero...   
4200: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
4210: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
4220: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f  l static bool Lo
4230: 67 50 72 65 42 69 6e 64 28 0d 0a 20 20 20 20 20  gPreBind(..     
4240: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
4250: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
4260: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
4270: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4280: 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74    flags &= SQLit
4290: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
42a0: 2e 4c 6f 67 50 72 65 42 69 6e 64 3b 0d 0a 20 20  .LogPreBind;..  
42b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
42c0: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
42d0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
42e0: 6f 67 50 72 65 42 69 6e 64 29 3b 0d 0a 20 20 20  ogPreBind);..   
42f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4340: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
4350: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4360: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
4370: 65 73 20 69 66 20 70 61 72 61 6d 65 74 65 72 20  es if parameter 
4380: 62 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62  binding should b
4390: 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20  e logged...     
43a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
43b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
43c0: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
43d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
43e0: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
43f0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
4400: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
4410: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
4420: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
4430: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
4440: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
4450: 69 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  if the parameter
4460: 20 62 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20   binding should 
4470: 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72  be logged; other
4480: 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20  wise, zero...   
4490: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
44a0: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
44b0: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f  l static bool Lo
44c0: 67 42 69 6e 64 28 0d 0a 20 20 20 20 20 20 20 20  gBind(..        
44d0: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
44e0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
44f0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4500: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66    {..          f
4510: 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f  lags &= SQLiteCo
4520: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4530: 67 42 69 6e 64 3b 0d 0a 20 20 20 20 20 20 20 20  gBind;..        
4540: 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20    return (flags 
4550: 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
4560: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 69 6e 64  ionFlags.LogBind
4570: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
4580: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
45d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
45e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
45f0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 61 6e 20  etermines if an 
4600: 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 61 20 6e  exception in a n
4610: 61 74 69 76 65 20 63 61 6c 6c 62 61 63 6b 20 73  ative callback s
4620: 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e  hould be logged.
4630: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4640: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4650: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
4660: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  lags">..      //
4670: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
4680: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
4690: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
46a0: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20  n object...     
46b0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
46c0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
46d0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
46e0: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 65 78  n-zero if the ex
46f0: 63 65 70 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62  ception should b
4700: 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77  e logged; otherw
4710: 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
4720: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
4730: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
4740: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67   static bool Log
4750: 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f  CallbackExceptio
4760: 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  ns(..          S
4770: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
4780: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
4790: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
47a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
47b0: 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s &= SQLiteConne
47c0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61  ctionFlags.LogCa
47d0: 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 3b  llbackException;
47e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
47f0: 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c  rn (flags == SQL
4800: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
4810: 67 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78  gs.LogCallbackEx
4820: 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20  ception);..     
4830: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
4840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4890: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
48a0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
48b0: 20 69 66 20 62 61 63 6b 75 70 20 41 50 49 20 65   if backup API e
48c0: 72 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20  rrors should be 
48d0: 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f  logged...      /
48e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
48f0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
4900: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
4910: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
4920: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
4930: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
4940: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
4950: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
4960: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
4970: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4980: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
4990: 20 74 68 65 20 62 61 63 6b 75 70 20 41 50 49 20   the backup API 
49a0: 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20  error should be 
49b0: 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73  logged; otherwis
49c0: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
49d0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
49e0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
49f0: 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 61  tatic bool LogBa
4a00: 63 6b 75 70 28 0d 0a 20 20 20 20 20 20 20 20 20  ckup(..         
4a10: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
4a20: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
4a30: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
4a40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
4a50: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
4a60: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
4a70: 42 61 63 6b 75 70 3b 0d 0a 20 20 20 20 20 20 20  Backup;..       
4a80: 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73     return (flags
4a90: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
4aa0: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63  tionFlags.LogBac
4ab0: 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  kup);..      }..
4ac0: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
4ad0: 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
4ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
4b30: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4b40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
4b50: 65 72 6d 69 6e 65 73 20 69 66 20 6c 6f 67 67 69  ermines if loggi
4b60: 6e 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20  ng for the <see 
4b70: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
4b80: 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d  le" /> class is.
4b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62  .      /// disab
4ba0: 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  led...      /// 
4bb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4bc0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4bd0: 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20  e="flags">..    
4be0: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4bf0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4c00: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
4c10: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
4c20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4c30: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
4c40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
4c50: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f  / Non-zero if lo
4c60: 67 67 69 6e 67 20 66 6f 72 20 74 68 65 20 3c 73  gging for the <s
4c70: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
4c80: 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20  odule" /> class 
4c90: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69  is..      /// di
4ca0: 73 61 62 6c 65 64 3b 20 6f 74 68 65 72 77 69 73  sabled; otherwis
4cb0: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
4cc0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
4cd0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
4ce0: 74 61 74 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67  tatic bool NoLog
4cf0: 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
4d00: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
4d10: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
4d20: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
4d30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4d40: 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43  flags &= SQLiteC
4d50: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
4d60: 6f 4c 6f 67 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  oLogModule;..   
4d70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66         return (f
4d80: 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f  lags == SQLiteCo
4d90: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
4da0: 4c 6f 67 4d 6f 64 75 6c 65 29 3b 0d 0a 20 20 20  LogModule);..   
4db0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
4e10: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4e20: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
4e30: 65 73 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d  es if <see cref=
4e40: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
4e50: 3e 20 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20  > errors should 
4e60: 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20  be logged...    
4e70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4e80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
4e90: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4ea0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4eb0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
4ec0: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
4ed0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
4ee0: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
4ef0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
4f00: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4f10: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
4f20: 20 69 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   if the <see cre
4f30: 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
4f40: 20 2f 3e 20 65 72 72 6f 72 20 73 68 6f 75 6c 64   /> error should
4f50: 20 62 65 20 6c 6f 67 67 65 64 3b 0d 0a 20 20 20   be logged;..   
4f60: 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65     /// otherwise
4f70: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
4f80: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4f90: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
4fa0: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64  atic bool LogMod
4fb0: 75 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  uleError(..     
4fc0: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
4fd0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
4fe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
4ff0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5000: 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74    flags &= SQLit
5010: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5020: 2e 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 3b  .LogModuleError;
5030: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5040: 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c  rn (flags == SQL
5050: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5060: 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f  gs.LogModuleErro
5070: 72 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  r);..      }....
5080: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
50d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
50e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
50f0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 3c 73  Determines if <s
5100: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
5110: 6f 64 75 6c 65 22 20 2f 3e 20 65 78 63 65 70 74  odule" /> except
5120: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a  ions should be..
5130: 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64        /// logged
5140: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
5150: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5160: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5170: 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f  flags">..      /
5180: 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73  // The flags ass
5190: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
51a0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
51b0: 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20  on object...    
51c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
51d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
51e0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
51f0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c  on-zero if the <
5200: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
5210: 4d 6f 64 75 6c 65 22 20 2f 3e 20 65 78 63 65 70  Module" /> excep
5220: 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 0d 0a  tion should be..
5230: 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64        /// logged
5240: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
5250: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
5260: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5270: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5280: 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45 78  bool LogModuleEx
5290: 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  ception(..      
52a0: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
52b0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
52c0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
52d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
52e0: 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65   flags &= SQLite
52f0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
5300: 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69  LogModuleExcepti
5310: 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72  on;..          r
5320: 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20  eturn (flags == 
5330: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
5340: 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45  Flags.LogModuleE
5350: 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20  xception);..    
5360: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
5370: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
53c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
53d0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
53e0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
53f0: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
5400: 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f   is running on o
5410: 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77  ne of the Window
5420: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73 75  s..      /// [su
5430: 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20  b-]platforms... 
5440: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5450: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
5460: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5470: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65  /// Non-zero whe
5480: 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e  n running on Win
5490: 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  dows; otherwise,
54a0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
54b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
54c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
54d0: 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64 6f  tic bool IsWindo
54e0: 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ws()..      {.. 
54f0: 20 20 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72           Platfor
5500: 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d  mID platformId =
5510: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56   Environment.OSV
5520: 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b  ersion.Platform;
5530: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
5540: 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d   ((platformId ==
5550: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
5560: 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  2S) ||..        
5570: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
5580: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
5590: 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c  Win32Windows) ||
55a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
55b0: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
55c0: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e  latformID.Win32N
55d0: 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  T) ||..         
55e0: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
55f0: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
5600: 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20  inCE))..        
5610: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5620: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
5630: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
5640: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5650: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
5660: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56b0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
56c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
56d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 77 72  /// This is a wr
56e0: 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
56f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
5700: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e 46 6f   cref="String.Fo
5710: 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72 6f 76  rmat(IFormatProv
5720: 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a 65  ider,String,Obje
5730: 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f 64  ct[])" /> method
5740: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e 20  ...      /// On 
5750: 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f 20  Mono, it has to 
5760: 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 20  call the method 
5770: 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f 75 74  overload without
5780: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
5790: 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f 72 6d  <see cref="IForm
57a0: 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e 20 70  atProvider" /> p
57b0: 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20 74 6f  arameter, due to
57c0: 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d   a bug in Mono..
57d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
57e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
57f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
5800: 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 20 20  ovider">..      
5810: 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73 65 64  /// This is used
5820: 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73 70 65   for culture-spe
5830: 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69 6e 67  cific formatting
5840: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5850: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5860: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f   <param name="fo
5870: 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  rmat">..      //
5880: 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72  / The format str
5890: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
58a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
58b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
58c0: 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f  "args">..      /
58d0: 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68 65 20  // An array the 
58e0: 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d 61  objects to forma
58f0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
5900: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
5910: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
5920: 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c     /// The resul
5930: 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20 20  ting string...  
5940: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5950: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
5960: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
5970: 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a   StringFormat(..
5980: 20 20 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61            IForma
5990: 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64  tProvider provid
59a0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  er,..          s
59b0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a 20  tring format,.. 
59c0: 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 20           params 
59d0: 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20  object[] args.. 
59e0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
59f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
5a00: 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20  f (IsMono())..  
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5a20: 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  rn String.Format
5a30: 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d  (format, args);.
5a40: 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d  .          else.
5a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
5a60: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
5a70: 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20 66 6f  mat(provider, fo
5a80: 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20  rmat, args);..  
5a90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
5aa0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5ab0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
5b00: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
5b10: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
5b20: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5b30: 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c 61 79  string ToDisplay
5b40: 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
5b50: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d     object value.
5b60: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
5b70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5b80: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
5b90: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5ba0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
5bb0: 79 4e 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a 0d 0a  yNullObject;....
5bc0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
5bd0: 20 73 74 72 69 6e 67 56 61 6c 75 65 20 3d 20 76   stringValue = v
5be0: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
5bf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
5c00: 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e 4c 65   (stringValue.Le
5c10: 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
5c20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5c30: 20 44 69 73 70 6c 61 79 45 6d 70 74 79 53 74 72   DisplayEmptyStr
5c40: 69 6e 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ing;....        
5c50: 20 20 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75    if (stringValu
5c60: 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 53 70 61  e.IndexOfAny(Spa
5c70: 63 65 43 68 61 72 73 29 20 3c 20 30 29 0d 0a 20  ceChars) < 0).. 
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5c90: 75 72 6e 20 73 74 72 69 6e 67 56 61 6c 75 65 3b  urn stringValue;
5ca0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
5cb0: 74 75 72 6e 20 48 65 6c 70 65 72 4d 65 74 68 6f  turn HelperMetho
5cc0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
5cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5ce0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
5cf0: 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 44 69  riantCulture, Di
5d00: 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61  splayStringForma
5d10: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
5d20: 20 20 73 74 72 69 6e 67 56 61 6c 75 65 29 3b 0d    stringValue);.
5d30: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
5d40: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5d90: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
5da0: 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70  ic string ToDisp
5db0: 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  layString(..    
5dc0: 20 20 20 20 20 20 41 72 72 61 79 20 61 72 72 61        Array arra
5dd0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  y..          )..
5de0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5df0: 20 20 20 69 66 20 28 61 72 72 61 79 20 3d 3d 20     if (array == 
5e00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5e10: 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73 70       return Disp
5e20: 6c 61 79 4e 75 6c 6c 41 72 72 61 79 3b 0d 0a 0d  layNullArray;...
5e30: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
5e40: 72 72 61 79 2e 4c 65 6e 67 74 68 20 3d 3d 20 30  rray.Length == 0
5e50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
5e60: 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45   return DisplayE
5e70: 6d 70 74 79 41 72 72 61 79 3b 0d 0a 0d 0a 20 20  mptyArray;....  
5e80: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
5e90: 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e  ilder result = n
5ea0: 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ew StringBuilder
5eb0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
5ec0: 20 66 6f 72 65 61 63 68 20 28 6f 62 6a 65 63 74   foreach (object
5ed0: 20 76 61 6c 75 65 20 69 6e 20 61 72 72 61 79 29   value in array)
5ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
5f00: 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e  (result.Length >
5f10: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
5f20: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
5f30: 70 65 6e 64 28 45 6c 65 6d 65 6e 74 53 65 70 61  pend(ElementSepa
5f40: 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  rator);....     
5f50: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
5f60: 41 70 70 65 6e 64 28 54 6f 44 69 73 70 6c 61 79  Append(ToDisplay
5f70: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 29 3b 0d  String(value));.
5f80: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
5f90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
5fa0: 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  sult.Length > 0)
5fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
5fc0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
5fd0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
5ff0: 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72  lt.Insert(0, Arr
6000: 61 79 4f 70 65 6e 2e 54 6f 53 74 72 69 6e 67 28  ayOpen.ToString(
6010: 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
6020: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
6030: 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79  .Insert(0, Array
6040: 4f 70 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Open);..#endif..
6050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6060: 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 41 72  result.Append(Ar
6070: 72 61 79 43 6c 6f 73 65 29 3b 0d 0a 20 20 20 20  rayClose);..    
6080: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
6090: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
60a0: 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  lt.ToString();..
60b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
60c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
60d0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
60e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
60f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6130: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74  ...  #region Nat
6140: 69 76 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70  ive Library Help
6150: 65 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20  er Class..  /// 
6160: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
6170: 20 54 68 69 73 20 73 74 61 74 69 63 20 63 6c 61   This static cla
6180: 73 73 20 70 72 6f 76 69 64 65 73 20 61 20 74 68  ss provides a th
6190: 69 6e 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e  in wrapper aroun
61a0: 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  d the native lib
61b0: 72 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64  rary..  /// load
61c0: 69 6e 67 20 66 65 61 74 75 72 65 73 20 6f 66 20  ing features of 
61d0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70  the underlying p
61e0: 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20  latform...  /// 
61f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e  </summary>..  in
6200: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
6210: 61 73 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72  ass NativeLibrar
6220: 79 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20  yHelper..  {..  
6230: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
6240: 61 74 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20  ate Delegates.. 
6250: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6260: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
6270: 69 73 20 64 65 6c 65 67 61 74 65 20 69 73 20 75  is delegate is u
6280: 73 65 64 20 74 6f 20 77 72 61 70 20 74 68 65 20  sed to wrap the 
6290: 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69  concept of loadi
62a0: 6e 67 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20  ng a native..   
62b0: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20     /// library, 
62c0: 62 61 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20  based on a file 
62d0: 6e 61 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e  name, and return
62e0: 69 6e 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d  ing the loaded m
62f0: 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  odule..      ///
6300: 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
6310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6320: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6330: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
6340: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6350: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
6360: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
6370: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
6380: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6390: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
63a0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
63b0: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
63c0: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
63d0: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
63e0: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
63f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6400: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
6410: 69 76 61 74 65 20 64 65 6c 65 67 61 74 65 20 49  ivate delegate I
6420: 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72  ntPtr LoadLibrar
6430: 79 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  yCallback(..    
6440: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
6450: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d  eName..      );.
6460: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
6470: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
64d0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
64e0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  thods..      ///
64f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6500: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
6510: 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69  o load the speci
6520: 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72  fied native libr
6530: 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74  ary file using t
6540: 68 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20  he Win32..      
6550: 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20  /// API...      
6560: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6570: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6580: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
6590: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
65a0: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
65b0: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
65c0: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
65d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
65e0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
65f0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
6600: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
6610: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
6620: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
6630: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
6640: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6650: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
6660: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
6670: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 57  Ptr LoadLibraryW
6680: 69 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  in32(..         
6690: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
66a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
66b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
66c0: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
66d0: 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33  ativeMethodsWin3
66e0: 32 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  2.LoadLibrary(fi
66f0: 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  leName);..      
6700: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6750: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
6760: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6770: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f  MEWORK..      //
6780: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6790: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
67a0: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
67b0: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
67c0: 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20  rary file using 
67d0: 74 68 65 20 50 4f 53 49 58 0d 0a 20 20 20 20 20  the POSIX..     
67e0: 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20   /// API...     
67f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6800: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
6810: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
6820: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
6830: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
6840: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
6850: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
6860: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6870: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
6880: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
6890: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
68a0: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
68b0: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
68c0: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
68d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
68e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
68f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
6900: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
6910: 50 6f 73 69 78 28 0d 0a 20 20 20 20 20 20 20 20  Posix(..        
6920: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
6930: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
6940: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6950: 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
6960: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73  NativeMethodsPos
6970: 69 78 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20 20 20  ix.dlopen(..    
6980: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
6990: 6d 65 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65  me, UnsafeNative
69a0: 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 52 54 4c  MethodsPosix.RTL
69b0: 44 5f 44 45 46 41 55 4c 54 29 3b 0d 0a 20 20 20  D_DEFAULT);..   
69c0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
69d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
69e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
6a40: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
6a50: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
6a60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
6a70: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f  / Attempts to lo
6a80: 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ad the specified
6a90: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
6aa0: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
6ab0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6ac0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6ad0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
6ae0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
6af0: 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  le name of the n
6b00: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f  ative library to
6b10: 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   load...      //
6b20: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6b30: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
6b40: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
6b50: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
6b60: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
6b70: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
6b80: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
6b90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
6ba0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ns>..      publi
6bb0: 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  c static IntPtr 
6bc0: 4c 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20  LoadLibrary(..  
6bd0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
6be0: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
6bf0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
6c00: 20 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62           LoadLib
6c10: 72 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c  raryCallback cal
6c20: 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72  lback = LoadLibr
6c30: 61 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66  aryWin32;....#if
6c40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6c50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6c60: 20 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70         if (!Help
6c70: 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
6c80: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
6c90: 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d        callback =
6ca0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69   LoadLibraryPosi
6cb0: 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  x;..#endif....  
6cc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
6cd0: 61 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65  allback(fileName
6ce0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
6cf0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
6d00: 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e   }..  #endregion
6d10: 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
6d70: 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72   Unmanaged Inter
6d80: 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69  op Methods Stati
6d90: 63 20 43 6c 61 73 73 20 28 50 4f 53 49 58 29 0d  c Class (POSIX).
6da0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6db0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6dc0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
6dd0: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
6de0: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
6df0: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
6e00: 63 61 6c 6c 20 6e 61 74 69 76 65 20 50 4f 53 49  call native POSI
6e10: 58 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c  X APIs...  /// <
6e20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b 53 75  /summary>..  [Su
6e30: 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43  ppressUnmanagedC
6e40: 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 20 20  odeSecurity]..  
6e50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6e60: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
6e70: 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 0d 0a  veMethodsPosix..
6e80: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f    {..      /////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
6ee0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6ef0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
6f00: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
6f10: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
6f20: 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c 6f 70  native Unix dlop
6f30: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  en..      /// fu
6f40: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
6f50: 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61   POSIX documenta
6f60: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
6f70: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
6f80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
6f90: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6fa0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6fb0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6fc0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
6fd0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
6fe0: 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  f the executable
6ff0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
7000: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7010: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7020: 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20  name="mode">..  
7030: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73      /// This mus
7040: 74 20 62 65 20 61 20 63 6f 6d 62 69 6e 61 74 69  t be a combinati
7050: 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 69 76 69  on of the indivi
7060: 64 75 61 6c 20 62 69 74 20 66 6c 61 67 73 20 52  dual bit flags R
7070: 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20  TLD_LAZY,..     
7080: 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52   /// RTLD_NOW, R
7090: 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f  TLD_GLOBAL, and/
70a0: 6f 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a  or RTLD_LOCAL...
70b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
70c0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
70d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
70e0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
70f0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
7100: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
7110: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
7120: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
7130: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7140: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
7150: 5f 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e 74 72  _Internal", Entr
7160: 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e  yPoint = "dlopen
7170: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61  ",..          Ca
7180: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7190: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
71a0: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
71b0: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73  et = CharSet.Ans
71c0: 69 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65  i,..          Be
71d0: 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66  stFitMapping = f
71e0: 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d  alse, ThrowOnUnm
71f0: 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72  appableChar = tr
7200: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53  ue,..          S
7210: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
7220: 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  ue)]..      inte
7230: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7240: 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e  rn IntPtr dlopen
7250: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
7260: 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a  , int mode);....
7270: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
72c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
72d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
72e0: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
72f0: 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63  pen(), bind func
7300: 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c  tion calls lazil
7310: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
7320: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7330: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69  internal const i
7340: 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30  nt RTLD_LAZY = 0
7350: 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x1;....      ///
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
73b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
73c0: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
73d0: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69  ith dlopen(), bi
73e0: 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c  nd function call
73f0: 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a  s immediately...
7400: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7410: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
7420: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
7430: 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a  TLD_NOW = 0x2;..
7440: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7490: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
74a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
74b0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
74c0: 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79  lopen(), make sy
74d0: 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61  mbols globally a
74e0: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
74f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7500: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
7510: 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47  const int RTLD_G
7520: 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a  LOBAL = 0x100;..
7530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
7540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
7590: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
75a0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
75b0: 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74  lopen(), opposit
75c0: 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c  e of RTLD_GLOBAL
75d0: 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c  , and the defaul
75e0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
75f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7600: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69  internal const i
7610: 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20  nt RTLD_LOCAL = 
7620: 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  0x000;....      
7630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7680: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7690: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
76a0: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
76b0: 20 74 68 65 20 64 65 66 61 75 6c 74 73 20 75 73   the defaults us
76c0: 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  ed by this class
76d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
76e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
76f0: 6e 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20 69  nternal  const i
7700: 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20  nt RTLD_DEFAULT 
7710: 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c  = RTLD_NOW | RTL
7720: 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a  D_GLOBAL;..  }..
7730: 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65  #endif..  #endre
7740: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7790: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
77a0: 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49  gion Unmanaged I
77b0: 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53  nterop Methods S
77c0: 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e  tatic Class (Win
77d0: 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  32)..  /// <summ
77e0: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
77f0: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
7800: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
7810: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
7820: 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f  Win32 APIs...  /
7830: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23  // </summary>..#
7840: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7850: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7860: 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61   [SuppressUnmana
7870: 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d  gedCodeSecurity]
7880: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65  ..#endif..  inte
7890: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
78a0: 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  s UnsafeNativeMe
78b0: 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d  thodsWin32..  {.
78c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
78d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7920: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7930: 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49   This is the P/I
7940: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61  nvoke method tha
7950: 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69  t wraps the nati
7960: 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62  ve Win32 LoadLib
7970: 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rary..      /// 
7980: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
7990: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
79a0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
79b0: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
79c0: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
79d0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
79e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
79f0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7a00: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
7a10: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
7a20: 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c  of the executabl
7a30: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
7a40: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
7a60: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7a70: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
7a80: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
7a90: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
7aa0: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
7ab0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7ac0: 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c  eturns>..#if !PL
7ad0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7ae0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b  AMEWORK..      [
7af0: 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65  DllImport("kerne
7b00: 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20  l32",..#else..  
7b10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
7b20: 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69  coredll",..#endi
7b30: 66 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  f.. CallingConve
7b40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7b50: 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69  onvention.Winapi
7b60: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
7b70: 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21  Set.Auto,..#if !
7b80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7b90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
7ba0: 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70       BestFitMapp
7bb0: 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72  ing = false, Thr
7bc0: 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68  owOnUnmappableCh
7bd0: 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64  ar = true,..#end
7be0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65  if..          Se
7bf0: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75  tLastError = tru
7c00: 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  e)]..      inter
7c10: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7c20: 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  n IntPtr LoadLib
7c30: 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65  rary(string file
7c40: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
7c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7ca0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
7cb0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7cc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7cd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
7ce0: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
7cf0: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
7d00: 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e  s the native Win
7d10: 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  32 GetSystemInfo
7d20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
7d30: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
7d40: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
7d50: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
7d60: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
7d70: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
7d80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7d90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7da0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73  <param name="sys
7db0: 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20  temInfo">..     
7dc0: 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20   /// The system 
7dd0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75  information stru
7de0: 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c  cture to be fill
7df0: 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e  ed in by the fun
7e00: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
7e10: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7e20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
7e30: 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43  redll", CallingC
7e40: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7e50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
7e60: 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e  napi)]..      in
7e70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7e80: 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73  tern void GetSys
7e90: 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54  temInfo(out SYST
7ea0: 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e  EM_INFO systemIn
7eb0: 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  fo);....      //
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
7f10: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7f20: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75      /// This enu
7f30: 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e  meration contain
7f40: 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76  s the possible v
7f50: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72  alues for the pr
7f60: 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f  ocessor..      /
7f70: 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20  // architecture 
7f80: 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73  field of the sys
7f90: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
7fa0: 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
7fb0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7fc0: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
7fd0: 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41   enum ProcessorA
7fe0: 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73  rchitecture : us
7ff0: 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20  hort /* COMPAT: 
8000: 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20  Win32. */..     
8010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
8020: 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20  tel = 0,..      
8030: 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20      MIPS = 1,.. 
8040: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d           Alpha =
8050: 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50   2,..          P
8060: 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20  owerPC = 3,..   
8070: 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d         SHx = 4,.
8080: 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d  .          ARM =
8090: 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49   5,..          I
80a0: 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20  A64 = 6,..      
80b0: 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c      Alpha64 = 7,
80c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c  ..          MSIL
80d0: 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 8,..         
80e0: 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20   AMD64 = 9,..   
80f0: 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57         IA32_on_W
8100: 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20  in64 = 10,..    
8110: 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20        Unknown = 
8120: 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d  0xFFFF..      }.
8130: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
8140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8180: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
8190: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
81a0: 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72  // This structur
81b0: 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72  e contains infor
81c0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
81d0: 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65   current compute
81e0: 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f  r. This..      /
81f0: 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20  // includes the 
8200: 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20  processor type, 
8210: 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72  page size, memor
8220: 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63  y addresses, etc
8230: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
8240: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b  ummary>..      [
8250: 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
8260: 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
8270: 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  al)]..      inte
8280: 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53 54  rnal struct SYST
8290: 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b  EM_INFO..      {
82a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
82b0: 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68  ic ProcessorArch
82c0: 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73  itecture wProces
82d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
82e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
82f0: 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72  ic ushort wReser
8300: 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ved; /* NOT USED
8310: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
8320: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67  ublic uint dwPag
8330: 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53  eSize; /* NOT US
8340: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
8350: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c   public IntPtr l
8360: 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74  pMinimumApplicat
8370: 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e  ionAddress; /* N
8380: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
8390: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
83a0: 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70  Ptr lpMaximumApp
83b0: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
83c0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
83d0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
83e0: 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50  c uint dwActiveP
83f0: 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a  rocessorMask; /*
8400: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
8410: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
8420: 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72  int dwNumberOfPr
8430: 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54  ocessors; /* NOT
8440: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
8450: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
8460: 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b  dwProcessorType;
8470: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
8480: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
8490: 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74  c uint dwAllocat
84a0: 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20  ionGranularity; 
84b0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
84c0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
84d0: 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73   ushort wProcess
84e0: 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20  orLevel; /* NOT 
84f0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
8500: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
8510: 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73   wProcessorRevis
8520: 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ion; /* NOT USED
8530: 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65   */..      }..#e
8540: 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  ndif..  }..  #en
8550: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
8560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
85b0: 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65  #region Unmanage
85c0: 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64  d Interop Method
85d0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28  s Static Class (
85e0: 53 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c  SQLite)..  /// <
85f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
8600: 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61  This class decla
8610: 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  res P/Invoke met
8620: 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74  hods to call nat
8630: 69 76 65 20 53 51 4c 69 74 65 20 41 50 49 73 2e  ive SQLite APIs.
8640: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
8650: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
8660: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8670: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
8680: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
8690: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
86a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
86b0: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
86c0: 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d  iveMethods..  {.
86d0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f  .      public co
86e0: 6e 73 74 20 73 74 72 69 6e 67 20 45 78 63 65 70  nst string Excep
86f0: 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d 61  tionMessageForma
8700: 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  t =..          "
8710: 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e  Caught exception
8720: 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74 68   in \"{0}\" meth
8730: 6f 64 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20  od: {1}";....   
8740: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8790: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 68        #region Sh
87a0: 61 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c 69  ared Native SQLi
87b0: 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
87c0: 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
87d0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
87e0: 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
87f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8800: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
8810: 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20   file extension 
8820: 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69 63  used for dynamic
8830: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73 2e   link libraries.
8840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8850: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
8860: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
8870: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c  donly string Dll
8880: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20  FileExtension = 
8890: 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20  ".dll";....     
88a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
88f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8900: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
8910: 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73  ile extension us
8920: 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20 63  ed for the XML c
8930: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
8940: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
8950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8960: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
8970: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 43  eadonly string C
8980: 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69  onfigFileExtensi
8990: 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b 0d  on = ".config";.
89a0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
89b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89f0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
8a00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8a10: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6e  // This is the n
8a20: 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
8a30: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
8a40: 65 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68  e specific to th
8a50: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79 73  e..      /// Sys
8a60: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
8a70: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
8a80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8a90: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
8aa0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
8ab0: 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46  tring XmlConfigF
8ac0: 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20  ileName =..     
8ad0: 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61       typeof(Unsa
8ae0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29  feNativeMethods)
8af0: 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c 6c  .Namespace + Dll
8b00: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b 0d  FileExtension +.
8b10: 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69  .          Confi
8b20: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d  gFileExtension;.
8b30: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
8b90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8ba0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 58  // This is the X
8bb0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 72 69 6f  ML configuratrio
8bc0: 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74 68 61  n file token tha
8bd0: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
8be0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
8bf0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
8c00: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
8c10: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
8c20: 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  g the XML config
8c30: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
8c40: 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  // file...      
8c50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8c60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8c70: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
8c80: 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 44 69  ring XmlConfigDi
8c90: 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a  rectoryToken =..
8ca0: 20 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c            "%PreL
8cb0: 6f 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e  oadSQLite_XmlCon
8cc0: 66 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b 0d  figDirectory%";.
8cd0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
8ce0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d30: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
8d40: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
8d50: 6e 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f 70  nstants (Desktop
8d60: 20 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29   Framework Only)
8d70: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8d80: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8d90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8da0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8db0: 20 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76   This is the env
8dc0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
8dd0: 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c  e token that wil
8de0: 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69  l be replaced wi
8df0: 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  th..      /// th
8e00: 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74 68  e qualified path
8e10: 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72   to the director
8e20: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69  y containing thi
8e30: 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  s assembly...   
8e40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8e50: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
8e60: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
8e70: 20 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c 79   string Assembly
8e80: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d  DirectoryToken =
8e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72  ..          "%Pr
8ea0: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73 73 65  eLoadSQLite_Asse
8eb0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 25 22 3b  mblyDirectory%";
8ec0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
8ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f10: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
8f20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8f30: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
8f40: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
8f50: 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20  able token that 
8f60: 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64  will be replaced
8f70: 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
8f80: 2f 2f 2f 20 61 62 62 72 65 76 69 61 74 69 6f 6e  /// abbreviation
8f90: 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 66   of the target f
8fa0: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
8fb0: 74 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69 61  te value associa
8fc0: 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
8fd0: 2f 2f 2f 20 74 68 69 73 20 61 73 73 65 6d 62 6c  /// this assembl
8fe0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
8ff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9000: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
9010: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 54  eadonly string T
9020: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f  argetFrameworkTo
9030: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
9040: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
9050: 5f 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  _TargetFramework
9060: 25 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  %";..#endif..   
9070: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
9080: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
90e0: 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
90f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9100: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
9110: 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64  his lock is used
9120: 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20   to protect the 
9130: 73 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e 61  static _SQLiteNa
9140: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
9150: 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5f  me,..      /// _
9160: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
9170: 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70 72  leHandle, and pr
9180: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9190: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65  urePlatforms fie
91a0: 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lds...      /// 
91b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
91c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
91d0: 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
91e0: 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20   staticSyncRoot 
91f0: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
9200: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9250: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9260: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9270: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
9280: 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 6d 61  ry stores the ma
9290: 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70  ppings between p
92a0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
92b0: 63 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  cture..      ///
92c0: 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66   names and platf
92d0: 6f 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68 65 73  orm names.  Thes
92e0: 65 20 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6e  e mappings are n
92f0: 6f 77 20 75 73 65 64 20 66 6f 72 20 74 77 6f 0d  ow used for two.
9300: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f  .      /// purpo
9310: 73 65 73 2e 20 20 46 69 72 73 74 2c 20 74 68 65  ses.  First, the
9320: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65  y are used to de
9330: 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 61  termine if the a
9340: 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20  ssembly code..  
9350: 20 20 20 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f      /// base sho
9360: 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74  uld be used inst
9370: 65 61 64 20 6f 66 20 74 68 65 20 6c 6f 63 61 74  ead of the locat
9380: 69 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f 6e 20  ion, based upon 
9390: 77 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20  whether one..   
93a0: 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f     /// or more o
93b0: 66 20 74 68 65 20 6e 61 6d 65 64 20 73 75 62 2d  f the named sub-
93c0: 64 69 72 65 63 74 6f 72 69 65 73 20 65 78 69 73  directories exis
93d0: 74 20 77 69 74 68 69 6e 20 74 68 65 20 61 73 73  t within the ass
93e0: 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20  embly code..    
93f0: 20 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53 65 63    /// base.  Sec
9400: 6f 6e 64 2c 20 74 68 65 79 20 61 72 65 20 75 73  ond, they are us
9410: 65 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20  ed to assist in 
9420: 6c 6f 61 64 69 6e 67 20 74 68 65 20 61 70 70 72  loading the appr
9430: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 2f  opriate..      /
9440: 2f 2f 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f  // SQLite intero
9450: 70 20 61 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20  p assembly into 
9460: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
9470: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
9480: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9490: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
94a0: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
94b0: 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63  ng, string> proc
94c0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
94d0: 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20  ePlatforms;.... 
94e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 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 0d 0a  //////////////..
9530: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9540: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
9550: 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68 65  his is the cache
9560: 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66  d return value f
9570: 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  rom the..      /
9580: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  // <see cref="Ge
9590: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
95a0: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f  ry" /> method -O
95b0: 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74 20  R- null if that 
95c0: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f  method..      //
95d0: 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74 75  / has never retu
95e0: 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61 6c  rned a valid val
95f0: 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
9600: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9610: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
9620: 73 74 72 69 6e 67 20 63 61 63 68 65 64 41 73 73  string cachedAss
9630: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
9640: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
96a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
96b0: 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69 65  // When this fie
96c0: 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20  ld is non-zero, 
96d0: 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65  it indicates the
96e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
96f0: 20 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62   cref="GetAssemb
9700: 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20  lyDirectory" /> 
9710: 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20 61  method was not a
9720: 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61 0d  ble to locate a.
9730: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74 61  .      /// suita
9740: 62 6c 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72  ble assembly dir
9750: 65 63 74 6f 72 79 2e 20 20 54 68 65 0d 0a 20 20  ectory.  The..  
9760: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9770: 66 3d 22 47 65 74 43 61 63 68 65 64 41 73 73 65  f="GetCachedAsse
9780: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
9790: 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 68  > method will ch
97a0: 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20 20  eck this..      
97b0: 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73 6b  /// field and sk
97c0: 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74  ips calls into t
97d0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
97e0: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
97f0: 72 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  ry" />..      //
9800: 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76 65  / method wheneve
9810: 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  r it is non-zero
9820: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9830: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
9840: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
9850: 6f 6c 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72  ol noAssemblyDir
9860: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
9870: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
98c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
98d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
98e0: 69 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65  is the cached re
98f0: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
9900: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
9910: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
9920: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
9930: 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e  /> method -OR- n
9940: 75 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68  ull if that meth
9950: 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61  od..      /// ha
9960: 73 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64  s never returned
9970: 20 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d   a valid value..
9980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
9990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
99a0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
99b0: 6e 67 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66  ng cachedXmlConf
99c0: 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  igFileName;.... 
99d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
99e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
99f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9a20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9a30: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
9a40: 68 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69  hen this field i
9a50: 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69  s non-zero, it i
9a60: 6e 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20  ndicates the..  
9a70: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9a80: 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  f="GetXmlConfigF
9a90: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
9aa0: 6f 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20  od was not able 
9ab0: 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20  to locate a..   
9ac0: 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
9ad0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
9ae0: 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 20 20 54 68  n file name.  Th
9af0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
9b00: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
9b10: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
9b20: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  me" /> method wi
9b30: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
9b40: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
9b50: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
9b60: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
9b70: 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  f="GetXmlConfigF
9b80: 69 6c 65 4e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20  ileName" />..   
9b90: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
9ba0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
9bb0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
9bc0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9bd0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9be0: 69 63 20 62 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e  ic bool noXmlCon
9bf0: 66 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  figFileName;..  
9c00: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
9c10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c60: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9c70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9c80: 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73 20  / For now, this 
9c90: 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79 20 63 61  method simply ca
9ca0: 6c 6c 73 20 74 68 65 20 49 6e 69 74 69 61 6c 69  lls the Initiali
9cb0: 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ze method...    
9cc0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9cd0: 0d 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 55  ..      static U
9ce0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
9cf0: 64 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ds()..      {.. 
9d00: 20 20 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c           Initial
9d10: 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ize();..      }.
9d20: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d70: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9d80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9d90: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 69  // Attempts to i
9da0: 6e 69 74 69 61 6c 69 7a 65 20 74 68 69 73 20 63  nitialize this c
9db0: 6c 61 73 73 20 62 79 20 70 72 65 2d 6c 6f 61 64  lass by pre-load
9dc0: 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53  ing the native S
9dd0: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  QLite..      ///
9de0: 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 65   library for the
9df0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
9e00: 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
9e10: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d  urrent process..
9e20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
9e30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
9e40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
9e50: 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a  d Initialize()..
9e60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9e80: 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20   // NOTE: Check 
9e90: 69 66 20 61 20 64 65 62 75 67 67 65 72 20 6e 65  if a debugger ne
9ea0: 65 64 73 20 74 6f 20 62 65 20 61 74 74 61 63 68  eds to be attach
9eb0: 65 64 20 62 65 66 6f 72 65 20 64 6f 69 6e 67 20  ed before doing 
9ec0: 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  any..          /
9ed0: 2f 20 20 20 20 20 20 20 72 65 61 6c 20 77 6f 72  /       real wor
9ee0: 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  k...          //
9ef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 48 65 6c 70  ..          Help
9f00: 65 72 4d 65 74 68 6f 64 73 2e 4d 61 79 62 65 42  erMethods.MaybeB
9f10: 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72  reakIntoDebugger
9f20: 28 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  ();....#if SQLIT
9f30: 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
9f40: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
9f50: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
9f60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20  TFRAMEWORK..#if 
9f70: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
9f80: 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20  IBRARY..        
9f90: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9fa0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
9fb0: 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74  "No_PreLoadSQLit
9fc0: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
9fd0: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28  ariable is set (
9fe0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
9ff0: 20 20 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29         anything)
a000: 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 66 20 6f 75  , skip all of ou
a010: 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 61  r special code a
a020: 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e  nd simply return
a030: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
a040: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
a050: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22  etSettingValue("
a060: 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  No_PreLoadSQLite
a070: 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
a080: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a090: 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66   return;..#endif
a0a0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
a0b0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
a0c0: 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
a0d0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
a0e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a0f0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61     // NOTE: Crea
a100: 74 65 20 74 68 65 20 6c 69 73 74 73 20 6f 66 20  te the lists of 
a110: 73 74 61 74 69 73 74 69 63 73 20 74 68 61 74 20  statistics that 
a120: 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 0d 0a 20 20  will contain..  
a130: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a140: 20 76 61 72 69 6f 75 73 20 63 6f 75 6e 74 73 20   various counts 
a150: 75 73 65 64 20 69 6e 20 64 65 62 75 67 67 69 6e  used in debuggin
a160: 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  g, including the
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
a180: 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20 74       number of t
a190: 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69 6e  imes each settin
a1a0: 67 20 76 61 6c 75 65 20 68 61 73 20 62 65 65 6e  g value has been
a1b0: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20   read...        
a1c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a1d0: 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74 69 61  DebugData.Initia
a1e0: 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  lize();..#endif.
a1f0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
a200: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
a210: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
a220: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
a230: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a240: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a250: 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20         // TODO: 
a260: 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c  Make sure this l
a270: 69 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69  ist is updated i
a280: 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d  f the supported.
a290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
a2a0: 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f  /       processo
a2b0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
a2c0: 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74  ames and/or plat
a2d0: 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20  form names..    
a2e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a2f0: 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20     changes...   
a300: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
a310: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a320: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
a330: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
a340: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
a350: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a360: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
a370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a380: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61     // NOTE: Crea
a390: 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72  te the map of pr
a3a0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
a3b0: 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20  ture names..    
a3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a3d0: 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f         to platfo
a3e0: 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61  rm names using a
a3f0: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
a400: 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  e string..      
a410: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
a420: 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a       comparer...
a430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a440: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a450: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
a460: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
a470: 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20  tforms =..      
a480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a490: 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  new Dictionary<s
a4a0: 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d  tring, string>(.
a4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a4c0: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
a4d0: 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
a4e0: 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d  lIgnoreCase);...
a4f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a500: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a510: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
a520: 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74  : Setup the list
a530: 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d   of platform nam
a540: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
a550: 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  th..            
a560: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
a570: 68 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f  he supported pro
a580: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
a590: 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  ures...         
a5a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
a5c0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
a5d0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
a5e0: 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22  d("x86", "Win32"
a5f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a600: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
a610: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
a620: 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22  orms.Add("AMD64"
a630: 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20  , "x64");..     
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
a650: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
a660: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
a670: 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d  "IA64", "Itanium
a680: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
a690: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
a6a0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
a6b0: 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c  forms.Add("ARM",
a6c0: 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20   "WinCE");..    
a6d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23            }....#
a6e0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
a6f0: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
a700: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
a710: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a720: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
a730: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
a740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a760: 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20  // BUGBUG: What 
a770: 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c  about other appl
a780: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f  ication domains?
a790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a7a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a7b0: 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74    if (_SQLiteNat
a7c0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
a7d0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
a7e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
a7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a800: 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44      string baseD
a810: 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
a820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a830: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
a840: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a850: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
a870: 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20   IGNORED */..   
a880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
a890: 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72  earchForDirector
a8a0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
a8b0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 61            ref ba
a8c0: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72 65 66  seDirectory, ref
a8d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
a8e0: 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a900: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a910: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
a920: 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64  empt to pre-load
a930: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
a940: 20 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20   library (or..  
a950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a960: 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70  //       interop
a970: 20 61 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73   assembly) and s
a980: 74 6f 72 65 20 62 6f 74 68 20 74 68 65 20 66 69  tore both the fi
a990: 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  le name..       
a9a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
a9b0: 20 20 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d      and native m
a9c0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72  odule handle for
a9d0: 20 6c 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20   later usage... 
a9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
aa00: 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45         /* IGNORE
aa10: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
aa20: 20 20 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53          PreLoadS
aa30: 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa50: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
aa60: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
aa70: 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  cture,..        
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
aa90: 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  f _SQLiteNativeM
aaa0: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a  oduleFileName,..
aab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aac0: 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74        ref _SQLit
aad0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
aae0: 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
aaf0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
ab00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
ab10: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
ab20: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ab30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ab70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
ab80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ab90: 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70 61 74  Combines two pat
aba0: 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  h strings...    
abb0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
abc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
abd0: 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31 22 3e  am name="path1">
abe0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
abf0: 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52 2d 20  first path -OR- 
ac00: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
ac10: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
ac20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
ac30: 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20 20 20  ="path2">..     
ac40: 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64 20   /// The second 
ac50: 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d  path -OR- null..
ac60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
ac70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
ac80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
ac90: 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e 65 64  /// The combined
aca0: 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d 4f 52   path string -OR
acb0: 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68 20 6f  - null if both o
acc0: 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 70  f the original p
acd0: 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  ath..      /// s
ace0: 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c 6c 2e  trings are null.
acf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
ad00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
ad10: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
ad20: 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ing MaybeCombine
ad30: 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20  Path(..         
ad40: 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c 0d 0a   string path1,..
ad50: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
ad60: 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20 20 20   path2..        
ad70: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
ad80: 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68          if (path
ad90: 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  1 != null)..    
ada0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
adb0: 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32         if (path2
adc0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
add0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
ade0: 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65  urn Path.Combine
adf0: 28 70 61 74 68 31 2c 20 70 61 74 68 32 29 3b 0d  (path1, path2);.
ae00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
ae10: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
ae20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61         return pa
ae30: 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  th1;..          
ae40: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
ae50: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  e..          {..
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ae70: 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29   (path2 != null)
ae80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae90: 20 20 20 20 72 65 74 75 72 6e 20 70 61 74 68 32      return path2
aea0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
aeb0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
aec0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
aed0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
aee0: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
aef0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
af00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
af40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
af50: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  ry>..      /// R
af60: 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64  esets the cached
af70: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
af80: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c  on file name val
af90: 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69 6e 67  ue, thus forcing
afa0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
afb0: 6e 65 78 74 20 63 61 6c 6c 20 74 6f 20 3c 73 65  next call to <se
afc0: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
afd0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
afe0: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f  me" /> method to
aff0: 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   rely..      ///
b000: 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65 20 63   upon the <see c
b010: 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69  ref="GetXmlConfi
b020: 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65  gFileName" /> me
b030: 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20 74 68  thod to fetch th
b040: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 58 4d 4c  e..      /// XML
b050: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
b060: 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ile name...     
b070: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
b080: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
b090: 74 61 74 69 63 20 76 6f 69 64 20 52 65 73 65 74  tatic void Reset
b0a0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
b0b0: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
b0c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
b0d0: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
b0e0: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
b0f0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
b100: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
b110: 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
b120: 6f 64 5f 52 65 73 65 74 43 61 63 68 65 64 58 6d  od_ResetCachedXm
b130: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
b140: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
b150: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
b160: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
b170: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
b180: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
b190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b1a0: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
b1b0: 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
b1c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
b1d0: 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  oXmlConfigFileNa
b1e0: 6d 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  me = false;..   
b1f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b200: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
b210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b250: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
b260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b270: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
b280: 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 63   returns the cac
b290: 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  hed XML configur
b2a0: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
b2b0: 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  for the..      /
b2c0: 2f 2f 20 61 73 73 65 6d 62 6c 79 20 63 6f 6e 74  // assembly cont
b2d0: 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67  aining the manag
b2e0: 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  ed System.Data.S
b2f0: 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73  QLite components
b300: 2c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  , if..      /// 
b310: 61 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74  available.  If t
b320: 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f  he cached XML co
b330: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
b340: 20 6e 61 6d 65 20 76 61 6c 75 65 20 69 73 20 6e   name value is n
b350: 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76  ot..      /// av
b360: 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c 73 65  ailable, the <se
b370: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
b380: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
b390: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
b3a0: 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20      /// be used 
b3b0: 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 58 4d  to obtain the XM
b3c0: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
b3d0: 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  file name...    
b3e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b3f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
b400: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
b410: 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   The XML configu
b420: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
b430: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
b440: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
b450: 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  mined..      ///
b460: 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69   or does not exi
b470: 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  st...      /// <
b480: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
b490: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
b4a0: 73 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64  string GetCached
b4b0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
b4c0: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
b4d0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
b4e0: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
b4f0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
b500: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
b510: 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43  .IncrementOtherC
b520: 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74  ount("Method_Get
b530: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
b540: 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64  ileName");..#end
b550: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
b560: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b570: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
b580: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
b590: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b5a0: 20 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68          if (cach
b5b0: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
b5c0: 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame != null)..  
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5e0: 72 65 74 75 72 6e 20 63 61 63 68 65 64 58 6d 6c  return cachedXml
b5f0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b 0d  ConfigFileName;.
b600: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b610: 20 69 66 20 28 6e 6f 58 6d 6c 43 6f 6e 66 69 67   if (noXmlConfig
b620: 46 69 6c 65 4e 61 6d 65 29 0d 0a 20 20 20 20 20  FileName)..     
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b640: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
b650: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b660: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 58 6d      return GetXm
b670: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28  lConfigFileName(
b680: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
b690: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b6e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b6f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
b700: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
b710: 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ns the XML confi
b720: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
b730: 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  me for the assem
b740: 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  bly..      /// c
b750: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61  ontaining the ma
b760: 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74  naged System.Dat
b770: 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65  a.SQLite compone
b780: 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nts...      /// 
b790: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b7a0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
b7b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58  .      /// The X
b7c0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
b7d0: 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20   file name -OR- 
b7e0: 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
b7f0: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d  t be determined.
b800: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f  .      /// or do
b810: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20  es not exist... 
b820: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
b830: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
b840: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
b850: 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c   GetXmlConfigFil
b860: 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b  eName()..      {
b870: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
b880: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
b890: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
b8a0: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
b8b0: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
b8c0: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
b8d0: 5f 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  _GetXmlConfigFil
b8e0: 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66  eName");..#endif
b8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
b900: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
b910: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
b920: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
b930: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
b940: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b950: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b960: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 64  ORK..          d
b970: 69 72 65 63 74 6f 72 79 20 3d 20 41 70 70 44 6f  irectory = AppDo
b980: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
b990: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
b9a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  ;..          fil
b9b0: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
b9c0: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
b9d0: 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ry, XmlConfigFil
b9e0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
b9f0: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
ba00: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
ba10: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
ba20: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
ba30: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
ba40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ba50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ba60: 20 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43        cachedXmlC
ba70: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
ba80: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
ba90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
baa0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bab0: 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  rn fileName;..  
bac0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
bad0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 64  f....          d
bae0: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61  irectory = GetCa
baf0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
bb00: 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20  ctory();..      
bb10: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d      fileName = M
bb20: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
bb30: 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f  directory, XmlCo
bb40: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a  nfigFileName);..
bb50: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
bb60: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
bb70: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
bb80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bb90: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
bba0: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
bbb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63               cac
bbd0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
bbe0: 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b  Name = fileName;
bbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bc00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
bc10: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
bc20: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  me;..          }
bc30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
bc40: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
bc50: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
bc60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bc70: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
bc80: 61 6d 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ame = true;..   
bc90: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
bca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
bcb0: 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  l;..      }.... 
bcc0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
bd10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
bd20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bd30: 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20 72   If necessary, r
bd40: 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70 70  eplaces all supp
bd50: 6f 72 74 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  orted XML config
bd60: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b  uration file tok
bd70: 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ens..      /// w
bd80: 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69  ith their associ
bd90: 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ated values...  
bda0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bdb0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
bdc0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
bdd0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
bde0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
bdf0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
be00: 6f 6e 20 66 69 6c 65 20 62 65 69 6e 67 20 72 65  on file being re
be10: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
be20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
be30: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
be40: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f  value">..      /
be50: 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61 6c  // A setting val
be60: 75 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ue read from the
be70: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
be80: 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
be90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
bea0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
beb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
bec0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70   value of the <p
bed0: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61  aramref name="va
bee0: 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c  lue" /> will all
bef0: 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 0d 0a   supported XML..
bf00: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
bf10: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b  uration file tok
bf20: 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e  ens replaced.  N
bf30: 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  o return value i
bf40: 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20  s reserved..    
bf50: 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74    /// to indicat
bf60: 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69  e an error.  Thi
bf70: 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20  s method cannot 
bf80: 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  fail...      ///
bf90: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
bfa0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
bfb0: 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65  c string Replace
bfc0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b  XmlConfigFileTok
bfd0: 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ens(..          
bfe0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
bff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
c000: 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
c010: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
c020: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
c030: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
c040: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
c050: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c060: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
c070: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
c080: 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  y(fileName))..  
c090: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0b0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
c0c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0e0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
c0f0: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
c100: 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61  ctoryName(fileNa
c110: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c130: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
c140: 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72  OrEmpty(director
c150: 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y))..           
c160: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c180: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
c190: 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a  value.Replace(..
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
c1c0: 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79  lConfigDirectory
c1d0: 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79  Token, directory
c1e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c1f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
c200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c210: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
c220: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
c230: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
c240: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
c250: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
c260: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
c270: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
c280: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
c290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c2a0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
c2b0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
c2c0: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c310: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
c320: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
c330: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
c340: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
c370: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
c380: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
c390: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3b0: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
c3c0: 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
c3d0: 65 20 58 4d 4c 20 22 20 2b 0d 0a 20 20 20 20 20  e XML " +..     
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66 69 67           "config
c400: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b  uration file \"{
c410: 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20 7b 31 7d  0}\" tokens: {1}
c420: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c440: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b    fileName, e));
c450: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
c460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c470: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
c480: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
c490: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
c4a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4c0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
c4d0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
c4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c4f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
c500: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
c510: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c520: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c530: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
c540: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  lue;..      }...
c550: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
c560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c5b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c5c0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
c5d0: 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65  eturns the value
c5e0: 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
c5f0: 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67  d setting, using
c600: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
c610: 73 70 65 63 69 66 69 65 64 20 58 4d 4c 20 63 6f  specified XML co
c620: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
c630: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c640: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c650: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
c660: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
c670: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
c680: 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
c690: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 20  uration file to 
c6a0: 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  read...      ///
c6b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
c6c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
c6d0: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
c6e0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
c6f0: 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  the setting...  
c700: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
c720: 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  am name="default
c730: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
c740: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
c750: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65  turned if the se
c760: 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65  tting has not be
c770: 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  en set explicitl
c780: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  y..      /// or 
c790: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
c7a0: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
c7b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
c7c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
c7d0: 3d 22 65 78 70 61 6e 64 22 3e 0d 0a 20 20 20 20  ="expand">..    
c7e0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74    /// Non-zero t
c7f0: 6f 20 65 78 70 61 6e 64 20 61 6e 79 20 65 6e 76  o expand any env
c800: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
c810: 65 20 72 65 66 65 72 65 6e 63 65 73 20 63 6f 6e  e references con
c820: 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20  tained in..     
c830: 20 2f 2f 2f 20 74 68 65 20 73 65 74 74 69 6e 67   /// the setting
c840: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
c850: 75 72 6e 65 64 2e 20 20 54 68 69 73 20 68 61 73  urned.  This has
c860: 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68   no effect on th
c870: 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f  e .NET..      //
c880: 2f 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  / Compact Framew
c890: 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ork...      /// 
c8a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
c8b0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
c8c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
c8d0: 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  ue of the settin
c8e0: 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75  g -OR- the defau
c8f0: 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69  lt value specifi
c900: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed by..      ///
c910: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
c920: 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20  "default" /> if 
c930: 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  it has not been 
c940: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f  set explicitly o
c950: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  r..      /// can
c960: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
c970: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
c980: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
c990: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
c9a0: 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67  tring GetSetting
c9b0: 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69  ValueViaXmlConfi
c9c0: 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  gFile(..        
c9d0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
c9e0: 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
c9f0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
ca00: 6d 65 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  me,     /* in */
ca10: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ca20: 6e 67 20 40 64 65 66 61 75 6c 74 2c 20 2f 2a 20  ng @default, /* 
ca30: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
ca40: 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 20 20 20   bool expand    
ca50: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
ca60: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
ca70: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
ca80: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
caa0: 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c  (fileName == nul
cab0: 6c 29 20 7c 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e  l) || (name == n
cac0: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
cad0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
cae0: 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20  @default;....   
caf0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44 6f             XmlDo
cb00: 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20  cument document 
cb10: 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e  = new XmlDocumen
cb20: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
cb30: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c        document.L
cb40: 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 20 2f  oad(fileName); /
cb50: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
cb70: 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d  lement element =
cb80: 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74   document.Select
cb90: 53 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20  SingleNode(..   
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
cbb0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
cbc0: 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72  ingFormat(Cultur
cbd0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
cbe0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
cbf0: 20 20 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e             "/con
cc00: 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65  figuration/appSe
cc10: 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d  ttings/add[@key=
cc20: 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20  '{0}']", name)) 
cc30: 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  as..            
cc40: 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74        XmlElement
cc50: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
cc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
cc70: 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20 6e 75  f (element != nu
cc80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
cc90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cca0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
ccb0: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61    if (element.Ha
cce0: 73 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  sAttribute("valu
ccf0: 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
cd10: 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41  e = element.GetA
cd20: 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22  ttribute("value"
cd30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
cd40: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
cd50: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
cd60: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
cd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
cd80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
cd90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64        if (expand
cdc0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
cde0: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
cdf0: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
ce00: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
ce10: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
ce30: 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69  ue = ReplaceEnvi
ce40: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54  ronmentVariableT
ce50: 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 23  okens(value);..#
ce60: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
ce80: 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 58 6d  alue = ReplaceXm
ce90: 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e  lConfigFileToken
cea0: 73 28 66 69 6c 65 4e 61 6d 65 2c 20 76 61 6c 75  s(fileName, valu
ceb0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
cec0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
cee0: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
cef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
cf10: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
cf20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cf30: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
cf40: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
cf50: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
cf60: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
cf70: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
cf80: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
cf90: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
cfa0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
cfb0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
cfc0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
cfd0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
cfe0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
cff0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
d010: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
d020: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
d030: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
d040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d050: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
d060: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
d070: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
d080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d090: 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
d0a0: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74  er failed to get
d0b0: 20 73 65 74 74 69 6e 67 20 5c 22 7b 30 7d 5c 22   setting \"{0}\"
d0c0: 20 76 61 6c 75 65 20 22 20 2b 0d 0a 20 20 20 20   value " +..    
d0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0e0: 20 20 22 66 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66    "from XML conf
d0f0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c  iguration file \
d100: 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61  "{1}\": {2}", na
d110: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
d120: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
d130: 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  ame, e)); /* thr
d140: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
d150: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d160: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
d170: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d190: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d1b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d1c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d1d0: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
d1e0: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  t;..      }.... 
d1f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d240: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d250: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d260: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
d270: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d280: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   Attempts to det
d290: 65 72 6d 69 6e 65 20 74 68 65 20 74 61 72 67 65  ermine the targe
d2a0: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
d2b0: 69 62 75 74 65 20 76 61 6c 75 65 20 74 68 61 74  ibute value that
d2c0: 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   is..      /// a
d2d0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
d2e0: 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
d2f0: 61 67 65 64 20 61 73 73 65 6d 62 6c 79 2c 20 69  aged assembly, i
d300: 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20  f applicable... 
d310: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
d320: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
d330: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 73 73 65  param name="asse
d340: 6d 62 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  mbly">..      //
d350: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61 73  / The managed as
d360: 73 65 6d 62 6c 79 20 74 6f 20 72 65 61 64 20 74  sembly to read t
d370: 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  he target framew
d380: 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
d390: 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  lue..      /// f
d3a0: 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rom...      /// 
d3b0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
d3c0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
d3d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
d3e0: 75 65 20 6f 66 20 74 68 65 20 74 61 72 67 65 74  ue of the target
d3f0: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
d400: 62 75 74 65 20 76 61 6c 75 65 20 66 6f 72 20 74  bute value for t
d410: 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
d420: 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20      /// managed 
d430: 61 73 73 65 6d 62 6c 79 20 2d 4f 52 2d 20 6e 75  assembly -OR- nu
d440: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
d450: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20  be determined.  
d460: 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f  If this..      /
d470: 2f 2f 20 61 73 73 65 6d 62 6c 79 20 77 61 73 20  // assembly was 
d480: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 61 20  compiled with a 
d490: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e  version of the .
d4a0: 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 70 72  NET Framework pr
d4b0: 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  ior to..      //
d4c0: 2f 20 76 65 72 73 69 6f 6e 20 34 2e 30 2c 20 74  / version 4.0, t
d4d0: 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
d4e0: 64 20 4d 41 59 20 72 65 66 6c 65 63 74 20 74 68  d MAY reflect th
d4f0: 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  at version of th
d500: 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f  e .NET..      //
d510: 2f 20 46 72 61 6d 65 77 6f 72 6b 20 69 6e 73 74  / Framework inst
d520: 65 61 64 20 6f 66 20 74 68 65 20 6f 6e 65 20 61  ead of the one a
d530: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
d540: 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
d550: 61 67 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  aged..      /// 
d560: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
d570: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
d580: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
d590: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
d5a0: 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72  AssemblyTargetFr
d5b0: 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20  amework(..      
d5c0: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
d5d0: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  embly..         
d5e0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
d5f0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
d600: 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly != null)..  
d610: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 4e          {..#if N
d620: 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20  ET_40 || NET_45 
d630: 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45  || NET_451 || NE
d640: 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20  T_452 || NET_46 
d650: 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45  || NET_461 || NE
d660: 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34 37 20  T_462 || NET_47 
d670: 7c 7c 20 4e 45 54 5f 34 37 31 0d 0a 20 20 20 20  || NET_471..    
d680: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
d690: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6b0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49    if (assembly.I
d6c0: 73 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20  sDefined(..     
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6e0: 20 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67       typeof(Targ
d6f0: 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69  etFrameworkAttri
d700: 62 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a  bute), false))..
d710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d730: 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
d740: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
d750: 75 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77  ute targetFramew
d760: 6f 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ork =..         
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d780: 20 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72   (TargetFramewor
d790: 6b 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20  kAttribute)..   
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7b0: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e         assembly.
d7c0: 47 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75  GetCustomAttribu
d7d0: 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tes(..          
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7f0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
d800: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
d810: 75 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b  ute), false)[0];
d820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d830: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d840: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
d850: 2e 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d  .FrameworkName;.
d860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d870: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d880: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d890: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
d8a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
d8c0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
d8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
d8e0: 23 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20  #elif NET_35..  
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d900: 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72  rn ".NETFramewor
d910: 6b 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b  k,Version=v3.5";
d920: 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a  ..#elif NET_20..
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d940: 74 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77  turn ".NETFramew
d950: 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30  ork,Version=v2.0
d960: 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  ";..#endif..    
d970: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d980: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
d990: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
d9a0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d9f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
da00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
da10: 41 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74  Accepts a long t
da20: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
da30: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
da40: 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74  and makes it int
da50: 6f 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d  o a..      /// m
da60: 75 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73  uch shorter vers
da70: 69 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f  ion, suitable fo
da80: 72 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74  r use with NuGet
da90: 20 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20   packages...    
daa0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dab0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
dac0: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
dad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
dae0: 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d  long target fram
daf0: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
db00: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
db10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
db20: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
db30: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
db40: 20 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20    /// The short 
db50: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
db60: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
db70: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
db80: 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   cannot..      /
db90: 2f 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  // be determined
dba0: 20 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a   or converted...
dbb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
dbc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
dbd0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
dbe0: 67 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67  g AbbreviateTarg
dbf0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
dc00: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
dc10: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
dc20: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
dc30: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
dc40: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
dc50: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
dc60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
dc70: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
dc80: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
dc90: 65 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d  eplace(".NETFram
dca0: 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22  ework,Version=v"
dcb0: 2c 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20  , "net");..     
dcc0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
dcd0: 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20  ue.Replace(".", 
dce0: 53 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a  String.Empty);..
dcf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
dd00: 69 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e  index = value.In
dd10: 64 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20  dexOf(',');.... 
dd20: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64           if (ind
dd30: 65 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20  ex != -1)..     
dd40: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
dd50: 20 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67   value.Substring
dd60: 28 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20  (0, index);.... 
dd70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
dd80: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
dd90: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
dda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dde0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
ddf0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
de00: 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
de10: 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
de20: 73 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f  supported enviro
de30: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74  nment variable t
de40: 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  okens..      ///
de50: 20 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f   with their asso
de60: 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a  ciated values...
de70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
de80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
de90: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
dea0: 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ue">..      /// 
deb0: 41 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  A setting value 
dec0: 72 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76  read from an env
ded0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
dee0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
def0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
df00: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
df10: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
df20: 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65   of the <paramre
df30: 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f  f name="value" /
df40: 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f  > will all suppo
df50: 72 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rted..      /// 
df60: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
df70: 61 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c  able tokens repl
df80: 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e  aced.  No return
df90: 20 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76   value is reserv
dfa0: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ed..      /// to
dfb0: 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72   indicate an err
dfc0: 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64  or.  This method
dfd0: 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20   cannot fail... 
dfe0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
dff0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
e000: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
e010: 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d   ReplaceEnvironm
e020: 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e  entVariableToken
e030: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
e040: 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
e050: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
e060: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
e070: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
e080: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
e090: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e0a0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
e0b0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
e0c0: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
e0d0: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0f0: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
e100: 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29  Empty(directory)
e110: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e120: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e130: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
e140: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e160: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
e170: 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20  lue.Replace(..  
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e190: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
e1a0: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20  DirectoryToken, 
e1b0: 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20  directory);..   
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e1d0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e1e0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
e1f0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
e200: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
e210: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
e220: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
e230: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
e240: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
e250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e260: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
e270: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
e280: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
e290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2a0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2d0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
e2e0: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
e2f0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
e300: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
e310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e320: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
e330: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
e340: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
e350: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
e360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e370: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
e380: 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
e390: 65 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a  e assembly " +..
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64                "d
e3c0: 69 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20  irectory token: 
e3d0: 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
e3e0: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e410: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e430: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e450: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
e460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e470: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
e480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e490: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
e4a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e4b0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
e4c0: 20 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c   assembly = null
e4d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e4e0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
e4f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e500: 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d             assem
e510: 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47  bly = Assembly.G
e520: 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d  etExecutingAssem
e530: 62 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  bly();..        
e540: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
e550: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
e560: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
e570: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
e580: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
e590: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
e5a0: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
e5b0: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
e5c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
e5d0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e5e0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
e5f0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
e600: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e620: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e630: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
e640: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
e650: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
e660: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
e670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e680: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
e690: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
e6a0: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
e6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e6c0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
e6d0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
e6e0: 20 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e   obtain executin
e6f0: 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  g " +..         
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e710: 20 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22   "assembly: {0}"
e720: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
e730: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
e740: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e750: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
e760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e770: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e790: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e7b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e7c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e7d0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
e7e0: 67 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  g targetFramewor
e7f0: 6b 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61  k = AbbreviateTa
e800: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a  rgetFramework(..
e810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e820: 20 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72    GetAssemblyTar
e830: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73  getFramework(ass
e840: 65 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  embly));....    
e850: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
e860: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
e870: 70 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77  pty(targetFramew
e880: 6f 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ork))..         
e890: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e8a0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
e8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e8d0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
e8e0: 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
e8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e900: 20 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67              Targ
e910: 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e  etFrameworkToken
e920: 2c 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  , targetFramewor
e930: 6b 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k);..           
e940: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
e950: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
e960: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
e970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e980: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
e990: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
e9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e9b0: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
e9c0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
e9e0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
e9f0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
ea00: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
ea10: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea50: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
ea60: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
ea70: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
eaa0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
eab0: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
eac0: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eae0: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
eaf0: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
eb00: 6f 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74  o replace target
eb10: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb30: 20 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74      "framework t
eb40: 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b  oken: {0}", e));
eb50: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
eb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
eb90: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
eba0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ebb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebc0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
ebd0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
ebe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ebf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
ec00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ec10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ec20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ec30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
ec40: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lue;..      }..#
ec50: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eca0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
ecb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ecc0: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
ecd0: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
ece0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70   value of the sp
ecf0: 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c  ecified setting,
ed00: 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a   using the XML..
ed10: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
ed20: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64  uration file and
ed30: 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  /or the environm
ed40: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f  ent variables fo
ed50: 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  r the current.. 
ed60: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
ed70: 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72   and/or the curr
ed80: 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e  ent system, when
ed90: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
eda0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
edb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
edc0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
edd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
ede0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74  name of the sett
edf0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
ee00: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ee10: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ee20: 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20  "default">..    
ee30: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
ee40: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  to be returned i
ee50: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61  f the setting ha
ee60: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
ee70: 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20  xplicitly..     
ee80: 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62   /// or cannot b
ee90: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
eea0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
eeb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
eec0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
eed0: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
eee0: 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20  he setting -OR- 
eef0: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
ef00: 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a  e specified by..
ef10: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
ef20: 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
ef30: 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20  t" /> if it has 
ef40: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
ef50: 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20  licitly or..    
ef60: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
ef70: 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20  determined.  By 
ef80: 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66  default, all ref
ef90: 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74  erences to exist
efa0: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
efb0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
efc0: 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70  bles will be exp
efd0: 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63  anded to their c
efe0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c  orresponding val
eff0: 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ues..      /// w
f000: 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20  ithin the value 
f010: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75  to be returned u
f020: 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65  nless either the
f030: 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d   "No_Expand" or.
f040: 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45  .      /// "No_E
f050: 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20  xpand_<paramref 
f060: 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20  name="name" />" 
f070: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
f080: 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d  able is set [to.
f090: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68  .      /// anyth
f0a0: 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ing]...      ///
f0b0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
f0c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f0d0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
f0e0: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
f0f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
f100: 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  e,    /* in */..
f110: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
f120: 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20   @default /* in 
f130: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
f140: 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50  .      {..#if !P
f150: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f160: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
f170: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
f180: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
f190: 65 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51  e special "No_SQ
f1a0: 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61  LiteGetSettingVa
f1b0: 6c 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  lue" environment
f1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
f1d0: 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73       variable is
f1e0: 20 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e   set [to anythin
f1f0: 67 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  g], this method 
f200: 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20  will always..   
f210: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
f220: 72 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75  return the defau
f230: 6c 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  lt value...     
f240: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f250: 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
f260: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
f270: 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
f280: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f              "No_
f290: 53 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67  SQLiteGetSetting
f2a0: 56 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29  Value") != null)
f2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f2d0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
f2e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
f2f0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f340: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f350: 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
f360: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
f370: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
f380: 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
f390: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
f3e0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
f3f0: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
f400: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
f410: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
f420: 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72    // NOTE: We ar
f430: 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20  e about to read 
f440: 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  a setting value 
f450: 66 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e  from the environ
f460: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
f470: 2f 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73  //       or poss
f480: 69 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d  ibly from the XM
f490: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
f4a0: 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d  file; create or.
f4b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f4c0: 20 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68      increment th
f4d0: 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74  e appropriate st
f4e0: 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20  atistic now...  
f4f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f500: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
f510: 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
f520: 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20  ReadCount(name, 
f530: 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  false);..#endif.
f540: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
f550: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
f560: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f570: 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
f5b0: 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e        bool expan
f5c0: 64 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41  d = true; /* SHA
f5d0: 52 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  RED: Environment
f5e0: 20 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69   -AND- XML confi
f5f0: 67 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20  g file. */....  
f600: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f650: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f660: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f670: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
f680: 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d  g value = null;.
f690: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
f6a0: 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
f6b0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
f6c0: 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29  ble("No_Expand")
f6d0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
f6e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f6f0: 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
f700: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
f710: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c   }..          el
f720: 73 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65  se if (Environme
f730: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
f740: 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
f750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
f760: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
f770: 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
f780: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
f790: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
f7a0: 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78            "No_Ex
f7b0: 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29  pand_{0}", name)
f7c0: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
f7d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f7e0: 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20         expand = 
f7f0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
f800: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
f810: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
f820: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
f830: 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65  entVariable(name
f840: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f850: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
f860: 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
f870: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f890: 20 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20   (expand)..     
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
f8b0: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
f8c0: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
f8d0: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
f8e0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
f8f0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70       value = Rep
f900: 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  laceEnvironmentV
f910: 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61  ariableTokens(va
f920: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
f930: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f940: 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
f950: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
f960: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
f970: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
f980: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
f990: 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53  TE: If the "No_S
f9a0: 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69  QLiteXmlConfigFi
f9b0: 6c 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  le" environment 
f9c0: 76 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20  variable is..   
f9d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
f9e0: 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
f9f0: 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
fa00: 69 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66  ill NEVER read f
fa10: 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
fa20: 20 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20     //       XML 
fa30: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
fa40: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le...          /
fa50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
fa60: 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
fa70: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
fa80: 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
fa90: 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65        "No_SQLite
faa0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20  XmlConfigFile") 
fab0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
fac0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fad0: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
fae0: 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ault;..         
faf0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
fb00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
fb50: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
fb60: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
fb70: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
fb80: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fb90: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
fba0: 20 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f   We are about to
fbb0: 20 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20   read a setting 
fbc0: 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58  value from the X
fbd0: 4d 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ML..          //
fbe0: 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
fbf0: 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74  tion file; creat
fc00: 65 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74  e or increment t
fc10: 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
fc20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
fc30: 20 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77     statistic now
fc40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
fc50: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
fc60: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65  Data.IncrementSe
fc70: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e  ttingReadCount(n
fc80: 61 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e  ame, true);..#en
fc90: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
fca0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
fcb0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fd00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fd10: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
fd20: 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ViaXmlConfigFile
fd30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fd40: 20 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e   GetCachedXmlCon
fd50: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e  figFileName(), n
fd60: 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65  ame, @default, e
fd70: 78 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  xpand);..      }
fd80: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdd0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
fde0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
fdf0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69  EWORK..      pri
fe00: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
fe10: 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28  ng ListToString(
fe20: 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69  IList<string> li
fe30: 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  st)..      {..  
fe40: 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74          if (list
fe50: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
fe60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fe70: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
fe80: 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72     StringBuilder
fe90: 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74   result = new St
fea0: 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a  ringBuilder();..
feb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
fec0: 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d  ach (string elem
fed0: 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20  ent in list)..  
fee0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fef0: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
ff00: 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
ff10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff20: 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20   continue;....  
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ff40: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20  result.Length > 
ff50: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
ff60: 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70        result.App
ff70: 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20  end(' ');....   
ff80: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
ff90: 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74  t.Append(element
ffa0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
ffb0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
ffc0: 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72  urn result.ToStr
ffd0: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ing();..      }.
ffe0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
fff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10030 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
10040 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43  ate static int C
10050 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74  heckForArchitect
10060 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73  uresAndPlatforms
10070 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
10080 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ing directory,..
10090 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69            ref Li
100a0 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68  st<string> match
100b0 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  es..          ).
100c0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
100d0 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d      int result =
100e0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
100f0 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20   if (matches == 
10100 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10110 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e       matches = n
10120 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
10130 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10140 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
10150 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
10160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10170 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
10180 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
10190 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20  ctory) &&..     
101a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72               (pr
101b0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
101c0 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20  urePlatforms != 
101d0 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
101e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
101f0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
10200 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72  ch (KeyValuePair
10210 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
10220 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20   pair..         
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41     in processorA
10250 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
10260 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20  orms)..         
10270 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10290 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e    if (Directory.
102a0 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62  Exists(MaybeComb
102b0 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
102c0 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a  y, pair.Key)))..
102d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
102f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10300 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70     matches.Add(p
10310 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20  air.Key);..     
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10330 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
10340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10350 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10370 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
10380 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  pair.Value;.... 
10390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103a0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
103b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
103c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103d0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
103e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103f0 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
10400 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65  ory.Exists(Maybe
10410 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
10420 63 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d  ctory, value))).
10430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10440 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10460 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28      matches.Add(
10470 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
10480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10490 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20     result++;..  
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
104c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
104d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
104e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
104f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
10500 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ult;..      }...
10510 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10560 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  ....      privat
10570 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68  e static bool Ch
10580 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42  eckAssemblyCodeB
10590 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
105a0 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
105b0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
105c0 66 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  f string fileNam
105d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
105e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
105f0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
10600 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10610 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20     if (assembly 
10620 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
10630 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10640 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
10650 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
10660 67 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73  g codeBase = ass
10670 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d  embly.CodeBase;.
10680 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10690 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
106a0 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61  llOrEmpty(codeBa
106b0 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
106c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
106d0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
106e0 20 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d         Uri uri =
106f0 20 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73   new Uri(codeBas
10700 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
10710 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46     string localF
10720 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f  ileName = uri.Lo
10730 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20  calPath;....    
10740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
10750 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c  ile.Exists(local
10760 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
10770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10780 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
10790 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
107a0 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
107b0 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
107c0 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
107d0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46            localF
107e0 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72  ileName); /* thr
107f0 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
10800 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d         string xm
10810 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
10820 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
10830 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
10840 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
10850 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  , XmlConfigFileN
10860 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
10870 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
10880 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67  Exists(xmlConfig
10890 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
108a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
108b0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
108c0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
108d0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
108e0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
108f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10910 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
10920 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
10930 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
10940 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
10950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
10960 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
10970 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
10980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10990 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
109a0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
109b0 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67  found XML config
109c0 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b  uration file " +
109d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
109e0 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61              "via
109f0 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63   code base for c
10a00 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
10a10 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b  ng assembly: \"{
10a20 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20  0}\"",..        
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a40 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e    xmlConfigFileN
10a50 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ame)); /* throw 
10a60 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
10a70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10a80 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
10a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10aa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10ac0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
10ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10ae0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
10af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
10b00 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69  leName = localFi
10b10 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
10b20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10b30 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
10b40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10b50 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73            List<s
10b60 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d  tring> matches =
10b70 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
10b80 20 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63          if (Chec
10b90 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
10ba0 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69  sAndPlatforms(di
10bb0 72 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74  rectory, ref mat
10bc0 63 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20  ches) > 0)..    
10bd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
10be0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
10bf0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
10c00 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
10c10 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c40 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
10c50 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
10c60 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
10c70 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
10c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
10c90 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
10ca0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
10cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cc0 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
10cd0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
10ce0 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62  found native sub
10cf0 2d 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b  -directories " +
10d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d10 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61              "via
10d20 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63   code base for c
10d30 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
10d40 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b  ng assembly: \"{
10d50 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20  0}\"",..        
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d70 20 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d    ListToString(m
10d80 61 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68  atches))); /* th
10d90 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
10da0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10dc0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
10dd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10df0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
10e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e10 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e30 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63    fileName = loc
10e40 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  alFileName;..   
10e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
10e60 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
10e70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10e90 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
10ea0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
10eb0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
10ec0 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
10ed0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
10ee0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
10ef0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
10f00 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
10f10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
10f20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
10f30 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
10f40 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
10f50 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
10f60 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f80 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
10f90 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
10fa0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fc0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
10fd0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
10fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ff0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
11000 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
11010 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65  er failed to che
11020 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b  ck code base " +
11030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11040 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72          "for cur
11050 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
11060 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c   assembly: {0}",
11070 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
11080 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11090 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
110a0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
110b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
110c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
110d0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
110e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
110f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
11100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
11110 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
11120 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
11130 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11180 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
11190 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
111a0 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65  Resets the cache
111b0 64 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63  d assembly direc
111c0 74 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73  tory value, thus
111d0 20 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78   forcing the nex
111e0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c  t..      /// cal
111f0 6c 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22  l to <see cref="
11200 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
11210 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
11220 65 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20  ethod to rely.. 
11230 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68       /// upon th
11240 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
11250 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11260 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20  y" /> method to 
11270 66 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20  fetch the..     
11280 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69   /// assembly di
11290 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
112a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
112b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
112c0 61 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43  atic void ResetC
112d0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
112e0 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
112f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
11300 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
11310 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
11320 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
11330 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
11340 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
11350 64 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73  d_ResetCachedAss
11360 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29  emblyDirectory")
11370 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
11380 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
11390 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
113a0 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
113b0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
113c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
113d0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
113e0 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  ectory = null;..
113f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
11400 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11410 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  y = false;..    
11420 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
11430 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
11440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11480 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
11490 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
114a0 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
114b0 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68  returns the cach
114c0 65 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  ed directory for
114d0 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
114e0 72 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f  rrently..      /
114f0 2f 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  // being execute
11500 64 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e  d, if available.
11510 20 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20    If the cached 
11520 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
11530 72 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ry value..      
11540 2f 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  /// is not avail
11550 61 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63  able, the <see c
11560 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79  ref="GetAssembly
11570 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
11580 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
11590 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20   /// be used to 
115a0 6f 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d  obtain the assem
115b0 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  bly directory...
115c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
115d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
115e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
115f0 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f   /// The directo
11600 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
11610 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
11620 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52  ing executed -OR
11630 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20  - null if..     
11640 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62   /// it cannot b
11650 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
11660 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
11670 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
11680 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
11690 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62   GetCachedAssemb
116a0 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
116b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
116c0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
116d0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
116e0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
116f0 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
11700 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
11710 4d 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64  Method_GetCached
11720 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11730 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y");..#endif..  
11740 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
11750 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
11760 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
11770 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
11780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11790 20 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65    if (cachedAsse
117a0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d  mblyDirectory !=
117b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
117c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
117d0 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44   cachedAssemblyD
117e0 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20  irectory;....   
117f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
11800 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
11810 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry)..           
11820 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
11830 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
11840 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
11850 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79  turn GetAssembly
11860 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20  Directory();..  
11870 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
11880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
118c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
118d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
118e0 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
118f0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
11900 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
11910 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
11920 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20  ently being..   
11930 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e     /// executed.
11940 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11950 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11960 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
11970 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63     /// The direc
11980 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73  tory for the ass
11990 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
119a0 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d  being executed -
119b0 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20  OR- null if..   
119c0 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74     /// it cannot
119d0 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
119e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
119f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
11a00 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
11a10 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69  ng GetAssemblyDi
11a20 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
11a30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
11a40 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
11a50 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
11a60 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
11a70 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
11a80 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
11a90 6f 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69  od_GetAssemblyDi
11aa0 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64  rectory");..#end
11ab0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
11ac0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
11ad0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11af0 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
11b00 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
11b10 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
11b20 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
11b30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11b40 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
11b50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11b60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11b70 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
11b80 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11bb0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
11bc0 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
11bd0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
11be0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11c00 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
11c10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11c20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
11c30 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e  ing fileName = n
11c40 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ull;....#if PLAT
11c50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11c60 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
11c70 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
11c80 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  e assemblyName =
11c90 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d   assembly.GetNam
11ca0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
11cb0 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
11cc0 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  lyName == null).
11cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11cf0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
11d00 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d30 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
11d40 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65  Directory = true
11d50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11d60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11d70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11d80 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
11d90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11da0 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
11db0 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61  ame = assemblyNa
11dc0 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65  me.CodeBase;..#e
11dd0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
11de0 20 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73     if (!CheckAss
11df0 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73  emblyCodeBase(as
11e00 73 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65  sembly, ref file
11e10 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
11e20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
11e30 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f  me = assembly.Lo
11e40 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  cation;..#endif.
11e50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11e60 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
11e70 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
11e80 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
11e90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11ea0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
11eb0 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ed0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11ee0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
11ef0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
11f00 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
11f10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f30 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
11f40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f60 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
11f70 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
11f80 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
11f90 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
11fa0 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
11fb0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
11fc0 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
11fd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
11ff0 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
12000 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
12010 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12030 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
12040 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
12050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12060 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12070 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
12080 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
12090 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
120a0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
120b0 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
120c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
120d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
120e0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
120f0 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f  ectory = directo
12100 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
12110 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12120 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
12130 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
12140 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
12150 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
12160 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
12170 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
12180 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
12190 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
121a0 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
121b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
121c0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
121d0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
121e0 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
121f0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12200 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
12220 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
12230 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
12240 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12260 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
12270 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12290 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
122a0 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
122b0 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72  ailed to get dir
122c0 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20  ectory " +..    
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
122f0 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
12300 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
12310 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
12320 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12330 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
12340 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
12350 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12360 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
12370 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
12380 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
12390 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
123a0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
123b0 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
123c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
123d0 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
123e0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
123f0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
12400 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12410 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
12420 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
12430 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
12440 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12490 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69      #region Opti
124a0 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69  onal Native SQLi
124b0 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
124c0 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
124d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20     //..      // 
124e0 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20  NOTE: If we are 
124f0 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20  looking for the 
12500 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
12510 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c  DLL ("sqlite3.dl
12520 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20  l"),..      //  
12530 20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70       the interop
12540 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e   DLL ("SQLite.In
12550 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20  terop.dll"), or 
12560 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
12570 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
12580 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61        .NET Compa
12590 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65  ct Framework, we
125a0 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20   should include 
125b0 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20  this code (only 
125c0 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  if the..      //
125d0 20 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68         feature h
125e0 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e  as actually been
125f0 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73   enabled).  This
12600 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74   code would be t
12610 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  otally..      //
12620 20 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74         redundant
12630 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20   if this module 
12640 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64  has been bundled
12650 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d   into the mixed-
12660 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  mode..      //  
12670 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a       assembly...
12680 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51        //..#if SQ
12690 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
126a0 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
126b0 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
126c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d  PACTFRAMEWORK...
126d0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
126e0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63   // NOTE: Only c
126f0 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61  ompile in the na
12700 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
12710 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68  -load code if th
12720 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20  e feature..     
12730 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65   //       has be
12740 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74  en enabled for t
12750 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20  his build...    
12760 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41    //..#if PRELOA
12770 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
12780 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
12790 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
127a0 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
127b0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
127c0 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67  iable containing
127d0 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
127e0 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
127f0 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
12800 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
12810 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12820 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
12830 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
12840 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45  nly string PROCE
12850 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
12860 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  E =..          "
12870 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
12880 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20  ECTURE";....    
12890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
128a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
128e0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
128f0 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
12900 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12910 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
12920 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
12930 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
12940 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
12950 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20  ary or null...  
12960 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12970 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
12980 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
12990 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
129a0 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  duleFileName = n
129b0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ull;....      //
129c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a00 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
12a10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12a20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
12a30 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
12a40 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
12a50 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
12a60 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20  r the value..   
12a70 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65     /// IntPtr.Ze
12a80 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
12a90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12aa0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
12ab0 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61  IntPtr _SQLiteNa
12ac0 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
12ad0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
12ae0 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
12af0 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
12b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b40 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
12b50 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12b60 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
12b70 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
12b80 6d 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20  me (without any 
12b90 64 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d  directory inform
12ba0 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f  ation)..      //
12bb0 2f 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  / for the native
12bc0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
12bd0 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64  to be pre-loaded
12be0 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   by this class..
12bf0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12c00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12c10 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12c20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66    /// The base f
12c30 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
12c40 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
12c50 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65  ibrary to be pre
12c60 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20  -loaded by..    
12c70 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73    /// this class
12c80 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
12c90 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62  s value cannot b
12ca0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
12cb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
12cc0 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
12cd0 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
12ce0 67 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  g GetNativeLibra
12cf0 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
12d00 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
12d10 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
12d20 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65  NameOnly = GetSe
12d30 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
12d40 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
12d50 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72  oadSQLite_Librar
12d60 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20  yFileNameOnly", 
12d70 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
12d80 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
12d90 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Only != null).. 
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12db0 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  urn fileNameOnly
12dc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
12dd0 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c  eturn SQLITE_DLL
12de0 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a  ; /* COMPAT */..
12df0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12e00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
12e50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12e60 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63  .      /// Searc
12e70 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69  hes for the nati
12e80 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
12e90 79 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f  y in the directo
12ea0 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ry containing.. 
12eb0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73       /// the ass
12ec0 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20  embly currently 
12ed0 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61  being executed a
12ee0 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61  s well as the ba
12ef0 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
12f00 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20      /// for the 
12f10 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
12f20 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  ion domain...   
12f30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12f40 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
12f50 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69  ram name="baseDi
12f60 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20  rectory">..     
12f70 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
12f80 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
12f90 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69  r will be modifi
12fa0 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74  ed to refer to t
12fb0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f  he base..      /
12fc0 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  // directory con
12fd0 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69  taining the nati
12fe0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
12ff0 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
13000 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
13010 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
13020 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
13030 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
13040 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
13050 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77  this parameter w
13060 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ill be modified 
13070 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  to refer to the 
13080 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  name..      /// 
13090 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65  of the immediate
130a0 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e   directory (i.e.
130b0 20 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d   the offset from
130c0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
130d0 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ory)..      /// 
130e0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
130f0 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
13100 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
13110 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
13120 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
13130 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
13140 72 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20  ro (success) if 
13150 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
13160 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f  e library was fo
13170 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  und; otherwise,.
13180 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20  .      /// zero 
13190 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20  (failure)...    
131a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
131b0 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
131c0 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72  static bool Sear
131d0 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d  chForDirectory(.
131e0 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
131f0 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
13200 6f 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f  ory,        /* o
13210 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
13220 20 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63   ref string proc
13230 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
13240 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  e /* out */..   
13250 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13260 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
13270 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
13280 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
13290 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
132a0 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72  e_NoSearchForDir
132b0 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21  ectory", null) !
132c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
132d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
132e0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
132f0 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f  ; /* DISABLED */
13300 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
13310 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13320 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
13330 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20  : Determine the 
13340 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  base file name f
13350 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
13360 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
13370 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13380 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74    If this is not
13390 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63   known by this c
133a0 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20  lass, we cannot 
133b0 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20  continue...     
133c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
133d0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
133e0 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69  meOnly = GetNati
133f0 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  veLibraryFileNam
13400 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly();....    
13410 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61        if (fileNa
13420 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  meOnly == null).
13430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
13440 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
13450 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13460 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13470 20 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20   Build the list 
13480 6f 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  of base director
13490 69 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ies and processo
134a0 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20  r/platform..    
134b0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e        //       n
134c0 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73  ames.  These lis
134d0 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20  ts will be used 
134e0 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74  to help locate t
134f0 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
13500 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51       //       SQ
13510 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
13520 79 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73  y (or interop as
13530 73 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c  sembly) to pre-l
13540 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20  oad into..      
13550 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
13560 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  s process...    
13570 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13580 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72      string[] dir
13590 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20  ectories = {..  
135a0 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41              GetA
135b0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
135c0 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  (),..#if !PLATFO
135d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
135e0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
135f0 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72     AppDomain.Cur
13600 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
13610 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69  irectory,..#endi
13620 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  f..          };.
13630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ...          str
13640 69 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f  ing[] subDirecto
13650 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20  ries = {..      
13660 20 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65          GetProce
13670 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
13680 28 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e  (), GetPlatformN
13690 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20  ame(null)..     
136a0 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20       };....     
136b0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74       foreach (st
136c0 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69  ring directory i
136d0 6e 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  n directories)..
136e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
136f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
13700 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
13710 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13720 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
13730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13740 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
13750 73 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20  subDirectory in 
13760 73 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d  subDirectories).
13770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
13780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13790 20 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63      if (subDirec
137a0 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tory == null).. 
137b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137c0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
137d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
137e0 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
137f0 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
13800 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62  leName(MaybeComb
13810 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13830 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
13840 28 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44  (directory, subD
13850 69 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20  irectory),..    
13860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13870 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29    fileNameOnly))
13880 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
13890 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
138b0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c  NOTE: If the SQL
138c0 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69  ite DLL file exi
138d0 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63  sts, return succ
138e0 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
138f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
13900 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e   Prior to return
13910 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73  ing, set the bas
13920 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d  e directory and.
13930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13940 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
13950 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
13960 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68  re to reflect th
13970 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20  e location..    
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13990 20 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20         where it 
139a0 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20  was found...    
139b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
139c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
139d0 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
139e0 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a00 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
13a10 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
13a20 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
13a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a40 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a70 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13a80 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
13a90 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
13aa0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
13ad0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
13ae0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
13af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b00 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
13b10 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e   pre-loader foun
13b20 64 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20  d native file " 
13b30 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
13b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b50 20 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20   "name \"{0}\", 
13b60 72 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74  returning direct
13b70 6f 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20  ory \"{1}\" and 
13b80 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
13b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ba0 20 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72     "sub-director
13bb0 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66  y \"{2}\"...", f
13bc0 69 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f  ileName, directo
13bd0 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bf0 20 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29     subDirectory)
13c00 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
13c40 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
13c50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c70 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
13c80 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
13c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13ca0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cc0 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20    baseDirectory 
13cd0 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  = directory;..  
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cf0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
13d00 68 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44  hitecture = subD
13d10 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
13d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d30 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a   return true; /*
13d40 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20   FOUND */..     
13d50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13d70 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13d80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13d90 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46   false; /* NOT F
13da0 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  OUND */..      }
13db0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e00 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
13e10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13e20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
13e30 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65  returns the base
13e40 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68   directory of th
13e50 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
13e60 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ation..      ///
13e70 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
13e80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13e90 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
13ea0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
13eb0 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
13ec0 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  y for the curren
13ed0 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
13ee0 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  main -OR- null i
13ef0 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  f it..      /// 
13f00 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
13f10 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
13f20 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
13f30 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
13f40 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65  c string GetBase
13f50 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20  Directory()..   
13f60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13f70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
13f80 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
13f90 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73  reLoadSQLite_Bas
13fa0 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69  eDirectory" envi
13fb0 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
13fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
13fd0 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65       is set, use
13fe0 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72   it verbatim for
13ff0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
14000 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ory...          
14010 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
14020 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
14030 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
14040 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f  ("PreLoadSQLite_
14050 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d  BaseDirectory",.
14060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
14070 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
14080 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
14090 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
140a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
140b0 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69  directory;....#i
140c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
140d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
140e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
140f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
14100 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
14110 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79  Lite_UseAssembly
14120 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
14130 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
14140 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
14150 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61  ble is set (to a
14160 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61  nything), then a
14170 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
14180 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
14190 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
141a0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
141b0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
141c0 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20  ng assembly..   
141d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
141e0 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74  (i.e. System.Dat
141f0 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61  a.SQLite) intsea
14200 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61  d of the applica
14210 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
14220 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20  //       domain 
14230 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
14240 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
14250 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74           if (Get
14260 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
14270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14280 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
14290 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63  UseAssemblyDirec
142a0 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  tory", null) != 
142b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
142c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
142d0 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65    directory = Ge
142e0 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
142f0 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ry();....       
14300 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63         if (direc
14310 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tory != null).. 
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14330 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
14340 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
14350 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
14360 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
14370 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
14380 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
14390 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
143a0 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
143b0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
143c0 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
143d0 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
143e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
143f0 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
14400 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
14410 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
14420 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
14430 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
14440 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
14450 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f  wise, fallback o
14460 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65  n using the dire
14470 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
14480 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
14490 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74       the current
144a0 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
144b0 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20  embly...        
144c0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
144d0 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62  return GetAssemb
144e0 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
144f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d  #endif..      }.
14500 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14550 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
14560 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14570 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
14580 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   the dynamic lin
14590 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
145a0 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73  ame requires a s
145b0 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f  uffix..      ///
145c0 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20   and adds it if 
145d0 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
145e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
145f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
14600 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
14610 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
14620 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61  he original dyna
14630 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
14640 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e   file name to in
14650 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  spect...      //
14660 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
14670 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
14680 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
14690 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
146a0 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70  ary file name, p
146b0 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64  ossibly modified
146c0 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a   to include an..
146d0 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73        /// extens
146e0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
146f0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
14700 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
14710 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c   string FixUpDll
14720 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  FileName(..     
14730 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
14740 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  Name /* in */.. 
14750 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
14760 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
14770 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
14780 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
14790 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
147a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
147b0 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  if (HelperMethod
147c0 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a  s.IsWindows())..
147d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
147e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
147f0 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65     if (!fileName
14800 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c  .EndsWith(DllFil
14810 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20  eExtension,..   
14820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14830 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
14840 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
14850 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20  gnoreCase))..   
14860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14880 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
14890 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c  ileName + DllFil
148a0 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20  eExtension;..   
148b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
148c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
148d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
148e0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
148f0 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  rn fileName;..  
14900 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14950 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
14960 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14970 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
14980 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
14990 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
149a0 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
149b0 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f  urrent..      //
149c0 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  / process...    
149d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
149e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
149f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
14a00 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   The processor a
14a10 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
14a20 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
14a30 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ss -OR- null if 
14a40 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  it..      /// ca
14a50 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
14a60 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
14a70 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
14a80 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
14a90 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73  string GetProces
14aa0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
14ab0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
14ac0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14ad0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
14ae0 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
14af0 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68  te_ProcessorArch
14b00 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f  itecture" enviro
14b10 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
14b20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
14b30 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69  le is set, use i
14b40 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74  t verbatim for t
14b50 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
14b60 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ssor..          
14b70 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65  //       archite
14b80 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
14b90 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14ba0 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
14bb0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
14bc0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
14bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
14be0 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72  PreLoadSQLite_Pr
14bf0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
14c00 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  ure", null);....
14c10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
14c20 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
14c30 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure != null)..  
14c40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14c50 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  rn processorArch
14c60 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20  itecture;....   
14c70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14c80 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20       // BUGBUG: 
14c90 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73  Will this always
14ca0 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20   be reliable?.. 
14cb0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14cc0 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
14cd0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
14ce0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50  etSettingValue(P
14cf0 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
14d00 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  CTURE, null);...
14d10 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14d70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14d80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
14d90 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48  ..          // H
14da0 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61  ACK: Check for a
14db0 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73  n "impossible" s
14dc0 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68  ituation.  If th
14dd0 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a  e pointer size..
14de0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
14df0 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74     is 32-bits, t
14e00 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
14e10 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74  hitecture cannot
14e20 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20   be "AMD64"...  
14e30 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
14e40 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77   In that case, w
14e50 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72  e are almost cer
14e60 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61  tainly hitting a
14e70 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20   bug in the..   
14e80 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14e90 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
14ea0 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53   and/or Visual S
14eb0 74 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65  tudio that cause
14ec0 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  s the..         
14ed0 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53   //       PROCES
14ee0 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
14ef0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
14f00 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e  iable to contain
14f10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
14f20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76  //       wrong v
14f30 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72  alue in some cir
14f40 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65  cumstances.  Ple
14f50 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63  ase refer to tic
14f60 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ket..          /
14f70 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32  /       [9ac9862
14f80 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72  611] for further
14f90 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
14fa0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14fb0 20 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50         if ((IntP
14fc0 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f  tr.Size == sizeo
14fd0 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20  f(int)) &&..    
14fe0 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
14ff0 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f  .Equals(processo
15000 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22  rArchitecture, "
15010 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20  AMD64",..       
15020 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
15030 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
15040 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d  nalIgnoreCase)).
15050 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
15060 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
15070 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43  0 && TRACE_DETEC
15080 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20  TION..          
15090 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
150a0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
150b0 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65  hen tracing is e
150c0 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65  nabled, save the
150d0 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65   originally dete
150e0 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  cted..          
150f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f      //       pro
15100 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
15110 75 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67  ure before chang
15120 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  ing it...       
15130 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
15140 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
15150 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72  savedProcessorAr
15160 63 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f  chitecture = pro
15170 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
15180 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  re;..#endif.... 
15190 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
151a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
151b0 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20  / NOTE: We know 
151c0 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73  that operating s
151d0 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75  ystems that retu
151e0 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20  rn "AMD64" as.. 
151f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15200 20 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73        the proces
15210 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
15220 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20   are actually a 
15230 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20  superset of..   
15240 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15250 20 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72      the "x86" pr
15260 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
15270 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c  ture; therefore,
15280 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20   return..       
15290 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
152a0 22 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70  "x86" when the p
152b0 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33  ointer size is 3
152c0 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20  2-bits...       
152d0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
152e0 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
152f0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
15300 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21   "x86";....#if !
15310 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
15320 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
15330 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
15340 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
15350 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15360 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15380 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61  / NOTE: Show tha
15390 74 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c  t we hit a fairl
153a0 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74  y unusual situat
153b0 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20  ion (i.e...     
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
153d0 20 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67        the "wrong
153e0 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  " processor arch
153f0 69 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74  itecture was det
15400 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20  ected)...       
15410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
15420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15430 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
15440 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
15450 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
15460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15470 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
15480 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
15490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
154a0 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
154b0 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
154c0 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62  r detected {0}-b
154d0 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a  it pointer " +..
154e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154f0 20 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68        "size with
15500 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
15510 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c  tecture \"{1}\",
15520 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20   using " +..    
15530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15540 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63    "processor arc
15550 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c  hitecture \"{2}\
15560 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a  " instead...",..
15570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15580 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a        IntPtr.Siz
15590 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f  e * 8 /* bits */
155a0 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72  , savedProcessor
155b0 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20  Architecture,.. 
155c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155d0 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
155e0 63 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a  chitecture)); /*
155f0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
15600 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15610 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
15620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
15630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15640 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
15650 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
15660 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
15670 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d         }..#else.
15680 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
15690 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
156a0 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
156b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
156c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
156d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
156e0 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54  OTE: On the .NET
156f0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
15700 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75  rk, attempt to u
15710 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  se the native.. 
15720 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15730 20 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20        Win32 API 
15740 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f  function (via P/
15750 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e  Invoke) that can
15760 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20   provide us..   
15770 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15780 20 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f      with the pro
15790 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
157a0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
157b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
157c0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
157d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
157e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
157f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15800 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
15810 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47   output of the G
15820 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e  etSystemInfo fun
15830 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20  ction will be.. 
15840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15850 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64   //       placed
15860 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65   here.  Only the
15870 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
15880 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20  tecture field.. 
15890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
158a0 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65   //       is use
158b0 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64  d by this method
158c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
158d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
158e0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
158f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
15900 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20  n32.SYSTEM_INFO 
15910 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20  systemInfo;.... 
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15930 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15940 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
15950 51 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d  Query the system
15960 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61   information via
15970 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d   P/Invoke, thus.
15980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15990 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c     //       fill
159a0 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72  ing the structur
159b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
159c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
159d0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
159e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57  feNativeMethodsW
159f0 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e  in32.GetSystemIn
15a00 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66  fo(out systemInf
15a10 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
15a20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15a40 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74  / NOTE: Return t
15a50 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
15a60 68 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20  hitecture value 
15a70 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  as a string...  
15a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
15aa0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
15ab0 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20  rchitecture =.. 
15ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ad0 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e       systemInfo.
15ae0 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  wProcessorArchit
15af0 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28  ecture.ToString(
15b00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
15b10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
15b20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
15b30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15b40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15b50 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
15b60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
15b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15b90 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61  // NOTE: Upon fa
15ba0 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e  ilure, return an
15bb0 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20   empty string.  
15bc0 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e  This will preven
15bd0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
15be0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61   //       the ca
15bf0 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f  lling method fro
15c00 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68  m considering th
15c10 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61  is method call a
15c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15c30 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72  //       "failur
15c40 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e"...           
15c50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15c60 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
15c70 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72  chitecture = Str
15c80 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20  ing.Empty;..    
15c90 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15ca0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
15cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
15d00 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72  return processor
15d10 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20  Architecture;.. 
15d20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
15d80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15d90 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20        /// Given 
15da0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
15db0 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75  chitecture, retu
15dc0 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
15dd0 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  the platform... 
15de0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15df0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
15e00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
15e10 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15e20 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
15e30 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
15e40 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20  hitecture to be 
15e50 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20  translated to a 
15e60 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
15e70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
15e80 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
15e90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
15ea0 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20  // The platform 
15eb0 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65  name for the spe
15ec0 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72  cified processor
15ed0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f   architecture -O
15ee0 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f  R- null..      /
15ef0 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  // if it cannot 
15f00 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
15f10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
15f20 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
15f30 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
15f40 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d  g GetPlatformNam
15f50 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
15f60 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
15f70 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e  chitecture /* in
15f80 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
15f90 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
15fa0 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
15fb0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
15fc0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
15fd0 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
15fe0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
15ff0 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
16000 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20  tecture();....  
16010 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
16020 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
16030 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
16040 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20  ecture))..      
16050 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
16060 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
16070 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
16080 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
16090 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
160a0 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
160b0 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
160c0 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d  tforms == null).
160d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
160e0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
160f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16100 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d   string platform
16110 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
16120 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
16130 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16140 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74  Platforms.TryGet
16150 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
16160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
16170 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16180 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72  ure, out platfor
16190 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  mName))..       
161a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
161b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
161c0 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  rn platformName;
161d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
161e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
161f0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
16200 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
16210 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
16220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16260 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
16270 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16280 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
16290 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
162a0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
162b0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65  based on the spe
162c0 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f  cified..      //
162d0 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20  / directory and 
162e0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
162f0 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ecture...      /
16300 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16310 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16320 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74  name="baseDirect
16330 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ory">..      ///
16340 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
16350 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c  ory to use, null
16360 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
16370 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
16380 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   of..      /// t
16390 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
163a0 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20  cation domain). 
163b0 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20   This directory 
163c0 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74  should contain t
163d0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
163e0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
163f0 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75  ture specific su
16400 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a  b-directories...
16410 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16420 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
16430 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
16440 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16450 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
16460 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63  e requested proc
16470 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16480 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  re, null for def
16490 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20  ault (the..     
164a0 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61   /// processor a
164b0 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
164c0 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
164d0 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65  ss).  This calle
164e0 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  r should..      
164f0 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79  /// almost alway
16500 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66  s specify null f
16510 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  or this paramete
16520 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
16530 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
16540 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
16550 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
16560 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
16570 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e   The candidate n
16580 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c  ative module fil
16590 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77  e name to load w
165a0 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65  ill be stored he
165b0 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  re,..      /// i
165c0 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
165d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
165e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
165f0 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
16600 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20  oduleHandle">.. 
16610 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
16620 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
16630 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79  e as returned by
16640 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c   LoadLibrary wil
16650 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20  l be stored..   
16660 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20     /// here, if 
16670 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73  necessary.  This
16680 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49   value will be I
16690 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68  ntPtr.Zero if th
166a0 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20  e call to..     
166b0 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79   /// LoadLibrary
166c0 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f   fails...      /
166d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
166e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
166f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
16700 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69  zero if the nati
16710 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f  ve module was lo
16720 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  aded successfull
16730 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  y; otherwise,.. 
16740 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a       /// zero...
16750 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
16760 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
16770 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
16780 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
16790 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
167a0 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
167b0 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  y,            /*
167c0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
167d0 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
167e0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
167f0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
16800 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
16810 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  g nativeModuleFi
16820 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a  leName, /* out *
16830 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  /..          ref
16840 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f   IntPtr nativeMo
16850 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a  duleHandle    /*
16860 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
16870 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
16880 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16890 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
168a0 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
168b0 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
168c0 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65  is null, use the
168d0 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20   default..      
168e0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
168f0 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75  e. attempt to au
16900 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65  tomatically dete
16910 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20  ct it)...       
16920 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16930 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
16940 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
16950 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
16960 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61  irectory = GetBa
16970 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  seDirectory();..
16980 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
16990 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
169a0 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
169b0 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73  to query the bas
169c0 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f  e directory, sto
169d0 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
169e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
169f0 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
16a00 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
16a10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16a20 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
16a30 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16a40 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
16a50 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
16a60 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
16a70 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
16a80 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
16a90 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
16aa0 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
16ab0 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
16ac0 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
16ad0 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
16ae0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
16af0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
16b00 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
16b10 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
16b20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
16b30 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
16b40 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
16b50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
16b60 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
16b70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16b80 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
16b90 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
16ba0 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69  library exists i
16bb0 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  n the base direc
16bc0 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tory..          
16bd0 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c  //       itself,
16be0 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
16bf0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16c00 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
16c10 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
16c20 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62  leName(MaybeComb
16c30 69 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65  inePath(baseDire
16c40 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
16c50 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e        fileNameOn
16c60 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
16c70 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
16c80 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
16c90 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
16ca0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
16cb0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16cc0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
16cd0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
16ce0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
16cf0 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20  ecture is null, 
16d00 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  use the..       
16d10 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61     //       defa
16d20 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ult...          
16d30 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
16d40 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
16d50 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
16d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16d70 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16d80 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65  cture = GetProce
16d90 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16da0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
16db0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
16dc0 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
16dd0 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
16de0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
16df0 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e  itecture, stop n
16e00 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
16e10 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
16e20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
16e30 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
16e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
16e50 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
16e60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16e70 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
16e80 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20   Build the full 
16e90 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61  path and file na
16ea0 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
16eb0 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
16ec0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
16ed0 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
16ee0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
16ef0 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  cture name...   
16f00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16f10 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
16f20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
16f30 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
16f40 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  h(MaybeCombinePa
16f50 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
16f60 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
16f70 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  , processorArchi
16f80 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61  tecture), fileNa
16f90 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
16fa0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16fb0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
16fc0 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62   the file name b
16fd0 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63  ased on the proc
16fe0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16ff0 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  re name..       
17000 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75     // is not fou
17010 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68  nd, try using th
17020 65 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61  e associated pla
17030 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
17040 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17050 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
17060 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
17070 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
17080 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
170a0 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
170b0 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65  to translate the
170c0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
170d0 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20  tecture to a..  
170e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
170f0 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61       platform na
17100 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
17110 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17120 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74       string plat
17130 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c  formName = GetPl
17140 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65  atformName(proce
17150 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
17160 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17170 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17180 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
17190 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74  f we failed to t
171a0 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61  ranslate the pla
171b0 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70  tform name, stop
171c0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
171d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
171e0 20 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66         if (platf
171f0 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  ormName == null)
17200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17210 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
17220 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
17230 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17240 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
17250 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74  ild the full pat
17260 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20  h and file name 
17270 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
17280 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
17290 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
172a0 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
172b0 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
172c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
172d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
172e0 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
172f0 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
17300 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79  eCombinePath(May
17310 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17330 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
17340 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20   platformName), 
17350 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
17360 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
17370 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
17380 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
17390 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74  he file does not
173a0 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79   exist, skip try
173b0 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d  ing to load it..
173c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
173d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
173e0 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74   if (!File.Exist
173f0 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
17400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17410 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
17420 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
17430 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
17440 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
17450 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
17460 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
17470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
17480 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
17490 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
174a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
174b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
174c0 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c  OTE: Show exactl
174d0 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74  y where we are t
174e0 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68  rying to load th
174f0 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
17500 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
17510 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72       SQLite libr
17520 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20  ary from...     
17530 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17550 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
17560 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
17570 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
17580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17590 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
175a0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
175b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
175c0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
175d0 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
175e0 64 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f  der is trying to
175f0 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b   load native " +
17600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17610 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20          "SQLite 
17620 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e  library \"{0}\".
17630 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b  ..", fileName));
17640 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
17650 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
17660 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
17670 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
17680 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17690 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
176a0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
176b0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
176c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
176d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
176e0 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
176f0 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  pt to load the n
17700 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20  ative library.  
17710 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72  This will either
17720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17730 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  //       return 
17740 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d  a valid native m
17750 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65  odule handle, re
17760 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
17770 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
17780 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72   //       or thr
17790 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e  ow an exception.
177a0 20 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20    This must use 
177b0 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
177c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
177d0 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65  /       P/Invoke
177e0 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20   method for the 
177f0 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e  current operatin
17800 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20  g system...     
17810 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17820 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
17830 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20  eModuleFileName 
17840 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
17850 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
17860 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
17870 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c  NativeLibraryHel
17880 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28  per.LoadLibrary(
17890 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
178a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
178b0 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65  rn (nativeModule
178c0 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
178d0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
178e0 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
178f0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
17900 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
17910 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
17920 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
17930 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
17940 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
17950 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
17960 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
17970 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
17980 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
17990 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
179a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
179b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
179c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
179d0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46        // NOTE: F
179e0 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c  irst, grab the l
179f0 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20  ast Win32 error 
17a00 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  number...       
17a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
17a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a30 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d   int lastError =
17a40 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74   Marshal.GetLast
17a50 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a  Win32Error(); /*
17a60 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
17a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
17a80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
17a90 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
17aa0 6f 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c  ow where we fail
17ab0 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ed to load the n
17ac0 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
17ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17ae0 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79  //       library
17af0 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68   from along with
17b00 20 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72   the Win32 error
17b10 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20   code and..     
17b20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17b30 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20        exception 
17b40 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
17b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17b60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
17b70 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
17b80 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
17b90 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
17ba0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
17bb0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
17bc0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
17bd0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
17be0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
17bf0 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
17c00 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
17c10 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b   load native " +
17c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17c30 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20          "SQLite 
17c40 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20  library \"{0}\" 
17c50 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20  (getLastError = 
17c60 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20  {1}): {2}",..   
17c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c80 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73     fileName, las
17c90 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20  tError, e)); /* 
17ca0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
17cb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
17cc0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
17cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17cf0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
17d00 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
17d10 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
17d20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17d30 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
17d40 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  e;..      }..#en
17d50 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dif..#endif..   
17d60 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
17d70 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
17dd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17de0 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  K..    //..    /
17df0 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e  / NOTE: On the .
17e00 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
17e10 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76  ework, the nativ
17e20 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
17e30 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20  ly must..    // 
17e40 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65        be used be
17e50 63 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65  cause it provide
17e60 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72  s several workar
17e70 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f  ounds to .NET Co
17e80 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20  mpact..    //   
17e90 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69      Framework li
17ea0 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74  mitations import
17eb0 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f  ant for proper o
17ec0 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  peration of the 
17ed0 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  core..    //    
17ee0 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53     System.Data.S
17ef0 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c  QLite functional
17f00 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20  ity (e.g. being 
17f10 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20  able to bind..  
17f20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d    //       param
17f30 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65  eters and handle
17f40 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f   column values o
17f50 66 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e  f types Int64 an
17f60 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20  d Double)...    
17f70 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
17f80 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
17f90 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69  LITE_DLL = "SQLi
17fa0 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 37 2e 64  te.Interop.107.d
17fb0 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49  ll";..#elif SQLI
17fc0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
17fd0 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
17fe0 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20  : Otherwise, if 
17ff0 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
18000 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65  ite library is e
18010 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d  nabled, use it..
18020 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
18030 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
18040 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
18050 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69  "sqlite3";..#eli
18060 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c  f USE_INTEROP_DL
18070 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  L..    //..    /
18080 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
18090 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  e, if the native
180a0 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20   SQLite interop 
180b0 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62  assembly is enab
180c0 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20  led,..    //    
180d0 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20     use it...    
180e0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
180f0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
18100 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69  LITE_DLL = "SQLi
18110 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b  te.Interop.dll";
18120 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d  ..#else..    //.
18130 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69  .    // NOTE: Fi
18140 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68  nally, assume th
18150 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  at the mixed-mod
18160 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65  e assembly is be
18170 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f  ing used...    /
18180 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
18190 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
181a0 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65  ITE_DLL = "Syste
181b0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
181c0 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  l";..#endif.... 
181d0 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69     // This secti
181e0 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20  on uses interop 
181f0 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20  calls that also 
18200 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74  fetch text lengt
18210 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f  h to optimize co
18220 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nversion...    /
18230 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65  / When using the
18240 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77   standard dll, w
18250 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68  e can replace th
18260 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e  ese calls with n
18270 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c  ormal sqlite cal
18280 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64  ls and..    // d
18290 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f  o unoptimized co
182a0 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61  nversions instea
182b0 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20  d afterwards..  
182c0 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f    #region intero
182d0 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67  p added textleng
182e0 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  th calls....#if 
182f0 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
18300 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
18310 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18320 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18330 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18340 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  tr sqlite3_bind_
18350 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69  parameter_name_i
18360 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
18370 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
18380 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
18390 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
183a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
183b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
183c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
183d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
183e0 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65  tabase_name_inte
183f0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
18400 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
18410 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
18420 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18430 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18440 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18450 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
18460 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
18470 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  ase_name16_inter
18480 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
18490 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
184a0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
184b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
184c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
184d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
184e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
184f0 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
18500 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  pe_interop(IntPt
18510 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
18520 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
18530 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
18540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18550 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18560 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18570 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
18580 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74  n_decltype16_int
18590 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
185a0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
185b0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
185c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
185d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
185e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
185f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18600 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
18610 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18620 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18630 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18640 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18650 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18660 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18670 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18680 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
18690 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
186a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
186b0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
186c0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
186d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
186e0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
186f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18700 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
18710 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
18720 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
18730 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18740 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
18750 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18770 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18780 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18790 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
187a0 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69  _origin_name16_i
187b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
187c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
187d0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
187e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
187f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18800 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18810 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
18820 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
18830 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ble_name_interop
18840 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
18850 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
18860 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
18870 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18880 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18890 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
188a0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
188b0 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
188c0 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
188d0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
188e0 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
188f0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18900 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18910 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18920 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
18930 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
18940 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70  umn_text_interop
18950 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
18960 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
18970 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
18980 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18990 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
189a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
189b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
189c0 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69  _column_text16_i
189d0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
189e0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
189f0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
18a00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18a10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18a20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18a30 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
18a40 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e  qlite3_errmsg_in
18a50 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
18a60 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18a70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18a80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18a90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18aa0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
18ab0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
18ac0 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f  3_prepare_intero
18ad0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  p(IntPtr db, Int
18ae0 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
18af0 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
18b00 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
18b10 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66  r ptrRemain, ref
18b20 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a   int nRemain);..
18b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18b40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18b50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18b60 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
18b70 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
18b80 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
18b90 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28  etadata_interop(
18ba0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
18bb0 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  ] dbName, byte[]
18bc0 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d   tblName, byte[]
18bd0 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e   colName, ref In
18be0 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65  tPtr ptrDataType
18bf0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
18c00 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74  CollSeq, ref int
18c10 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e   notNull, ref in
18c20 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65  t primaryKey, re
18c30 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72  f int autoInc, r
18c40 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65  ef int dtLen, re
18c50 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d  f int csLen);...
18c60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18c70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18c80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18c90 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
18ca0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
18cb0 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
18cc0 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  r p, ref int len
18cd0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18ce0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18cf0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18d00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
18d10 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
18d20 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f  ue_text16_intero
18d30 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
18d40 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
18d50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18d60 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18d70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18d80 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
18d90 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74  _malloc_size_int
18da0 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d  erop(IntPtr p);.
18db0 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c  ...#if INTEROP_L
18dc0 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  OG..    [DllImpo
18dd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18de0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18df0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18e00 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18e10 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69  te3_config_log_i
18e20 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69  nterop();..#endi
18e30 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  f..#endif..// !S
18e40 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
18e50 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
18e60 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
18e70 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65   functions add e
18e80 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  xisting function
18e90 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20  ality on top of 
18ea0 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69  SQLite and requi
18eb0 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f  re a little effo
18ec0 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65  rt to..    // ge
18ed0 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75  t working when u
18ee0 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
18ef0 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
18f00 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  ...    #region i
18f10 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e  nterop added fun
18f20 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69  ctionality....#i
18f30 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
18f40 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
18f50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18f60 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18f70 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
18f80 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62  tPtr interop_lib
18f90 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20  version();....  
18fa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18fb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18fc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18fd0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
18fe0 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b  erop_sourceid();
18ff0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
19000 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19010 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19020 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
19030 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
19040 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74  ption_used(IntPt
19050 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a  r zOptName);....
19060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19070 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19080 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19090 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
190a0 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
190b0 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
190c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
190d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
190e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
190f0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
19100 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
19110 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  te3_close_intero
19120 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  p(IntPtr db);...
19130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19140 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19150 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19160 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19170 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19180 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
19190 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
191a0 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
191b0 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69  me, int nArgs, i
191c0 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
191d0 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
191e0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51  allback func, SQ
191f0 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74  LiteCallback fst
19200 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43  ep, SQLiteFinalC
19210 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20  allback ffinal, 
19220 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29  int needCollSeq)
19230 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19250 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19260 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19270 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19280 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e  ite3_finalize_in
19290 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
192a0 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  t);....    [DllI
192b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
192c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
192d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
192e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
192f0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
19300 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nish_interop(Int
19310 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
19320 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19330 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19340 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19350 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
19360 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
19370 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  blob_close_inter
19380 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b  op(IntPtr blob);
19390 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
193a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
193b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
193c0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
193d0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
193e0 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70  te3_open_interop
193f0 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
19400 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73  name, byte[] vfs
19410 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e  Name, SQLiteOpen
19420 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
19430 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72   int extFuncs, r
19440 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ef IntPtr db);..
19450 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19460 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19470 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19480 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
19490 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
194a0 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70  3_open16_interop
194b0 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
194c0 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73  name, byte[] vfs
194d0 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e  Name, SQLiteOpen
194e0 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
194f0 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72   int extFuncs, r
19500 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ef IntPtr db);..
19510 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19520 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19530 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19540 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
19550 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
19560 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28  3_reset_interop(
19570 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
19580 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19590 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
195a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
195b0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
195c0 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74  ite3_changes_int
195d0 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
195e0 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
195f0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
19600 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
19610 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74  ...    // The st
19620 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20  andard api call 
19630 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74  equivalents of t
19640 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70  he above interop
19650 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67   calls..    #reg
19660 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72  ion standard ver
19670 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70  sions of interop
19680 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69   functions....#i
19690 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
196a0 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  D....#if !PLATFO
196b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
196c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
196d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
196e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
196f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19700 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19710 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19720 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19730 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19740 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19750 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19760 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
19770 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ose(IntPtr db);.
19780 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f  ...#if !INTEROP_
19790 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69  LEGACY_CLOSE..#i
197a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
197b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
197c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
197d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
197e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
197f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19800 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19810 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19820 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19830 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19840 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19850 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19860 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28  qlite3_close_v2(
19870 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33  IntPtr db); /* 3
19880 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69  .7.14+ */..#endi
19890 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
198a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
198b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
198c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
198d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
198e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
198f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19900 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19910 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19920 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19930 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19940 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19950 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
19960 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e  eate_function(In
19970 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
19980 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
19990 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
199a0 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
199b0 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
199c0 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
199d0 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
199e0 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
199f0 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  nal);....#if !PL
19a00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19a10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19a20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19a30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19a40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19a50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19a60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19a70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19a80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19a90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19aa0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
19ab0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
19ac0 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74  3_finalize(IntPt
19ad0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
19ae0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19af0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19b00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19b10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19b20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19b30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19b40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19b50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19b60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19b70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19b80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19b90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19ba0 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
19bb0 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  sh(IntPtr backup
19bc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19bd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19be0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19bf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19c00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19c10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19c20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19c30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19c40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19c50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19c60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19c70 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
19c80 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
19c90 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74  eset(IntPtr stmt
19ca0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19cb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19cc0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19cd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19ce0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19cf0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19d00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19d10 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19d20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19d30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19d40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19d50 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19d60 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
19d70 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72  eter_name(IntPtr
19d80 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
19d90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19da0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19db0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19dc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19dd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19de0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19df0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19e00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19e10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19e20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19e30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19e40 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19e50 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
19e60 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74  abase_name(IntPt
19e70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
19e80 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
19e90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19ea0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19eb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19ec0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19ed0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19ee0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19ef0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19f00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19f10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19f20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19f30 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
19f40 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
19f50 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e  tabase_name16(In
19f60 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
19f70 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
19f80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19f90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19fa0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19fb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19fc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19fd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19fe0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19ff0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a000 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a010 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a020 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1a030 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1a040 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72  _decltype(IntPtr
1a050 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a060 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a070 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a080 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a090 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a0a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a0b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a0c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a0d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a0e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a0f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a100 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a110 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a120 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
1a130 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73  ltype16(IntPtr s
1a140 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a150 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a160 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a170 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a190 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a1a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a1b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a1c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a1d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a1e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a1f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a200 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a210 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28  te3_column_name(
1a220 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1a230 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1a240 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a250 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a270 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a280 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a290 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a2a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a2b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a2c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a2d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a2e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a2f0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1a300 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  mn_name16(IntPtr
1a310 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a320 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a330 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a340 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a360 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a370 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a380 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a390 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a3a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a3b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a3c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a3d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a3e0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
1a3f0 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  gin_name(IntPtr 
1a400 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1a410 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a420 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a430 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a450 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a460 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a470 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a480 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a490 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a4a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a4b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a4c0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1a4d0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
1a4e0 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  in_name16(IntPtr
1a4f0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a500 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a550 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a560 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a570 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a580 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a5a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a5b0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a5c0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
1a5d0 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  le_name(IntPtr s
1a5e0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a5f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a600 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a610 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a620 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a630 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a640 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a650 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a660 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a670 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a680 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a690 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a6a0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a6b0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
1a6c0 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1a6d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a6e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a6f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a700 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a710 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a720 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a730 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a740 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a750 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a760 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a770 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a780 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a790 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1a7a0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28  te3_column_text(
1a7b0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1a7c0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1a7d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a7e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a7f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a800 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a810 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a830 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a850 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a870 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a880 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1a890 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  mn_text16(IntPtr
1a8a0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a8b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a8c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a8d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a8e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a8f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a900 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a910 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a920 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a930 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a940 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a950 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a960 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a970 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74  lite3_errmsg(Int
1a980 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
1a990 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a9a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a9b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a9c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a9d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a9e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a9f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1aa00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1aa10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1aa20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1aa30 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1aa40 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1aa50 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74  ite3_prepare(Int
1aa60 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70  Ptr db, IntPtr p
1aa70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c  Sql, int nBytes,
1aa80 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74   ref IntPtr stmt
1aa90 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
1aaa0 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20  Remain);....#if 
1aab0 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a  USE_PREPARE_V2..
1aac0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1aad0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1aae0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1aaf0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ab00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ab10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ab20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ab30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ab40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ab50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ab60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ab70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1ab80 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
1ab90 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49  _v2(IntPtr db, I
1aba0 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
1abb0 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50  nBytes, ref IntP
1abc0 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74  tr stmt, ref Int
1abd0 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d  Ptr ptrRemain);.
1abe0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1abf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ac00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ac10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ac20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ac30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ac40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ac50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ac60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ac70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ac80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ac90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1aca0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1acb0 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
1acc0 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72  _metadata(IntPtr
1acd0 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61   db, byte[] dbNa
1ace0 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  me, byte[] tblNa
1acf0 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61  me, byte[] colNa
1ad00 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1ad10 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20  trDataType, ref 
1ad20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65  IntPtr ptrCollSe
1ad30 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75  q, ref int notNu
1ad40 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d  ll, ref int prim
1ad50 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20  aryKey, ref int 
1ad60 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66  autoInc);....#if
1ad70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ad80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ad90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ada0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1adb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1adc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1add0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ade0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1adf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ae00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ae10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ae20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
1ae30 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70  ue_text(IntPtr p
1ae40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ae50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ae60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ae70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ae80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ae90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1aea0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1aeb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1aec0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1aed0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1aee0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1aef0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1af00 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
1af10 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  16(IntPtr p);...
1af20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
1af30 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1af40 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
1af50 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
1af60 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e functions are 
1af70 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20  custom and have 
1af80 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
1af90 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d  andard library m
1afa0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41  ethod...    // A
1afb0 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22  ll of them are "
1afc0 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61  nice to haves" a
1afd0 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  nd not necessari
1afe0 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65  ly "need to have
1aff0 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  s"...    #region
1b000 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
1b010 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a  tandard method..
1b020 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
1b030 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
1b040 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b050 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1b060 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b070 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b080 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71  _context_collseq
1b090 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1b0a0 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74  context, ref int
1b0b0 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65   type, ref int e
1b0c0 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  nc, ref int len)
1b0d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1b0e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b0f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b100 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1b110 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
1b120 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74  _collcompare_int
1b130 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
1b140 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20  ext, byte[] p1, 
1b150 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b  int p1len, byte[
1b160 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29  ] p2, int p2len)
1b170 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1b180 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b190 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b1a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1b1b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1b1c0 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69  ite3_cursor_rowi
1b1d0 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
1b1e0 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f   stmt, int curso
1b1f0 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69  r, ref long rowi
1b200 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
1b210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b220 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1b230 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1b240 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1b250 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c  qlite3_index_col
1b260 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70  umn_info_interop
1b270 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
1b280 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65  [] catalog, byte
1b290 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79  [] IndexName, by
1b2a0 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c  te[] ColumnName,
1b2b0 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64   ref int sortOrd
1b2c0 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72  er, ref int onEr
1b2d0 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ror, ref IntPtr 
1b2e0 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69  Collation, ref i
1b2f0 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a  nt colllen);....
1b300 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b310 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1b320 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b330 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b340 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72  te3_table_cursor
1b350 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1b360 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e  stmt, int db, in
1b370 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29  t tableRootPage)
1b380 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  ;....#endif..// 
1b390 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1b3a0 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
1b3b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61  on....    // Sta
1b3c0 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20  ndard API calls 
1b3d0 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65  global across ve
1b3e0 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61  rsions.  There a
1b3f0 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63  re a few instanc
1b400 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61  es of interop ca
1b410 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74  lls..    // scat
1b420 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62  tered in here, b
1b430 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79  ut they are only
1b440 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41   active when PLA
1b450 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b460 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72  MEWORK is declar
1b470 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  ed...    #region
1b480 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65   standard sqlite
1b490 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69   api calls....#i
1b4a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b4b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b4c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b4d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b4e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b4f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b500 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b510 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b520 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b530 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b540 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1b550 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69  ntPtr sqlite3_li
1b560 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23  bversion();....#
1b570 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b580 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b590 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b5a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b5b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b5c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b5d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b5e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b5f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b600 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b610 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b620 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  int sqlite3_libv
1b630 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b  ersion_number();
1b640 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b650 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b660 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b670 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b680 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b690 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b6a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b6b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b6c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b6d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b6e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b6f0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1b700 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  te3_sourceid();.
1b710 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b720 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b730 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b740 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b750 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b760 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b770 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b780 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b790 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b7a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b7b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b7c0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1b7d0 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
1b7e0 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61  ed(IntPtr zOptNa
1b7f0 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
1b800 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b810 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1b820 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b830 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1b840 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1b850 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b860 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1b870 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b880 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1b890 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1b8a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1b8b0 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
1b8c0 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
1b8d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b8e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b8f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b900 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b910 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b920 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b930 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b940 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b950 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b960 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b970 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b980 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1b990 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e  rCode sqlite3_en
1b9a0 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68  able_shared_cach
1b9b0 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  e(..        int 
1b9c0 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  enable);....#if 
1b9d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b9e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b9f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ba00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ba10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ba20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ba30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ba40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ba50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ba60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ba70 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ba80 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1ba90 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64  ite3_enable_load
1baa0 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20  _extension(..   
1bab0 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
1bac0 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a  int enable);....
1bad0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1bae0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1baf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bb00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bb10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bb20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bb30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bb40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bb50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1bb60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1bb70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bb80 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bb90 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78   sqlite3_load_ex
1bba0 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
1bbb0 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74    IntPtr db, byt
1bbc0 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79  e[] fileName, by
1bbd0 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72  te[] procName, r
1bbe0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
1bbf0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1bc00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bc10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bc20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bc30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bc40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bc50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1bc60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bc70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bc80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bc90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bca0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1bcb0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
1bcc0 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e  verload_function
1bcd0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
1bce0 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41  tr zName, int nA
1bcf0 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e  rgs);....#if WIN
1bd00 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46  DOWS..#if !PLATF
1bd10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bd20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bd30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bd40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bd50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bd60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
1bd70 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
1bd80 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
1bd90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bda0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
1bdb0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1bdc0 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
1bdd0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1bde0 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69   NOTE: The "sqli
1bdf0 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69  te3_win32_set_di
1be00 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20  rectory" SQLite 
1be10 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
1be20 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
1be30 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
1be40 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
1be50 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
1be60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1be70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1be80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
1be90 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
1bea0 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72  y(uint type, str
1beb0 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ing value);....#
1bec0 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54  if !DEBUG // NOT
1bed0 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49  E: Should be "WI
1bee0 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44  N32HEAP && !MEMD
1bef0 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54  EBUG"..#if !PLAT
1bf00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bf10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bf20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bf30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bf40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bf50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bf60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bf70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bf80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bf90 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1bfa0 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77  : The "sqlite3_w
1bfb0 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22  in32_reset_heap"
1bfc0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1bfd0 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
1bfe0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
1bff0 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
1c000 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68   Windows when th
1c010 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61  e Win32 native a
1c020 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a  llocator is in..
1c030 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
1c040 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c   (i.e. by defaul
1c050 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20  t, in "Release" 
1c060 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
1c070 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20  .Data.SQLite..  
1c080 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29    //       only)
1c090 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69  .  By default, i
1c0a0 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73  n "Debug" builds
1c0b0 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
1c0c0 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20  SQLite, the..   
1c0d0 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42   //       MEMDEB
1c0e0 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  UG allocator is 
1c0f0 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
1c100 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c110 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c120 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c130 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65  3_win32_reset_he
1c140 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ap();....#if !PL
1c150 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c160 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c170 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c180 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c190 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c1a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c1b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c1c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c1d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c1e0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1c1f0 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
1c200 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68  _win32_compact_h
1c210 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65  eap" SQLite core
1c220 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
1c230 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
1c240 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
1c250 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65  d on Windows whe
1c260 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  n the Win32 nati
1c270 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ve allocator is 
1c280 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  in..    //      
1c290 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65   use (i.e. by de
1c2a0 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61  fault, in "Relea
1c2b0 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  se" builds of Sy
1c2c0 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
1c2d0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
1c2e0 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c  nly).  By defaul
1c2f0 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75  t, in "Debug" bu
1c300 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
1c310 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d  ata.SQLite, the.
1c320 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45  .    //       ME
1c330 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72  MDEBUG allocator
1c340 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   is used...    /
1c350 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
1c360 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1c370 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1c380 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70  lite3_win32_comp
1c390 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e  act_heap(ref uin
1c3a0 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e  t largest);..#en
1c3b0 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  dif..#endif....#
1c3c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c3d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c3e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c3f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c420 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c430 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c440 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c450 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c460 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c470 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
1c480 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d  alloc(int n);...
1c490 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c4a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c4b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c4c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c4d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c4e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c4f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c500 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c510 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c520 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c530 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c540 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1c550 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20  _realloc(IntPtr 
1c560 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  p, int n);....#i
1c570 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c580 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
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 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c5b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c5c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c5d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c5e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c5f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1c600 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c610 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1c620 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65  oid sqlite3_free
1c630 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1c640 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c650 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c670 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c680 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c690 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c6a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c6b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c6c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c6d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c6e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c6f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c700 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
1c710 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
1c720 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
1c730 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  db, SQLiteOpenFl
1c740 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62  agsEnum flags, b
1c750 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d  yte[] vfsName);.
1c760 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c770 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c780 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c7a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c7b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c7c0 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
1c7d0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1c7e0 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
1c7f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c800 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
1c810 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1c820 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
1c830 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c840 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c850 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c860 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20  3_open16(string 
1c870 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e  fileName, ref In
1c880 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1c890 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c8a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c8b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c8c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c8d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c8e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c8f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c900 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c910 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c920 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c930 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1c940 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  id sqlite3_inter
1c950 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b  rupt(IntPtr db);
1c960 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c970 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c980 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c990 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c9a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c9b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c9c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
1c9d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c9e0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
1c9f0 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
1ca00 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64  t_rowid(IntPtr d
1ca10 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  b);..#endif....#
1ca20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ca30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ca40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ca50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ca60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ca70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ca80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ca90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1caa0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1cab0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cac0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cad0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e  int sqlite3_chan
1cae0 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ges(IntPtr db);.
1caf0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1cb00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cb10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1cb20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1cb30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1cb40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1cb50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1cb60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1cb70 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
1cb80 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
1cb90 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  ();..#endif....#
1cba0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1cbb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1cbc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cbd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1cbe0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1cbf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1cc00 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1cc10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cc20 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
1cc30 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
1cc40 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29  r(int resetFlag)
1cc50 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1cc60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1cc70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1cc80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cc90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1cca0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ccb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ccc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ccd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cce0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ccf0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1cd00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cd10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1cd20 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
1cd30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1cd40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1cd50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1cd60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1cd70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1cd80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1cd90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1cda0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1cdb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1cdc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1cdd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cde0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1cdf0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75  rCode sqlite3_bu
1ce00 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74  sy_timeout(IntPt
1ce10 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a  r db, int ms);..
1ce20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ce30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ce40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ce50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ce60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ce70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ce80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ce90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1cea0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ceb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1cec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ced0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1cee0 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72  de sqlite3_clear
1cef0 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72  _bindings(IntPtr
1cf00 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1cf10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1cf20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1cf30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1cf40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1cf50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1cf60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1cf70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1cf80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cf90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1cfa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1cfb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1cfc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1cfd0 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e  te3_bind_blob(In
1cfe0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1cff0 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c  ndex, Byte[] val
1d000 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
1d010 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74  ntPtr nTransient
1d020 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1d030 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d040 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d050 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d060 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d070 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d080 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d090 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d0a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d0b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d0c0 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49  e3_bind_double(I
1d0d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d0e0 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61  index, double va
1d0f0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
1d100 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d110 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d120 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d130 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d140 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d150 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d160 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d170 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d180 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d190 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d1a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d1b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1d1c0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
1d1d0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
1d1e0 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76  int index, int v
1d1f0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  alue);....    //
1d200 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
1d210 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
1d220 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
1d230 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65  ind_int"; howeve
1d240 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
1d250 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
1d260 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
1d270 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
1d280 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65  ed (32-bit) inte
1d290 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
1d2a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d2b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d2c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d2d0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1d2e0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
1d2f0 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e  ind_int", Callin
1d300 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d320 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d330 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d340 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
1d350 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
1d360 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65  _bind_int")]..#e
1d370 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d380 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d390 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1d3a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
1d3b0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
1d3c0 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20  int index, uint 
1d3d0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
1d3e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d3f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d410 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d420 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d430 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d440 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1d450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d460 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d470 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1d480 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
1d490 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20  int index, long 
1d4a0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1d4b0 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  ...    //..    /
1d4c0 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61  / NOTE: This rea
1d4d0 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22  lly just calls "
1d4e0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1d4f0 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74  64"; however, it
1d500 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f   has the..    //
1d510 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74         correct t
1d520 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f  ype signature fo
1d530 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f  r an unsigned lo
1d540 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65  ng (64-bit) inte
1d550 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69  ger...    //..#i
1d560 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d570 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d580 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d590 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1d5a0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
1d5b0 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c  ind_int64", Call
1d5c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d5d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d5e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
1d5f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d600 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1d610 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
1d620 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72  nd_uint64(IntPtr
1d630 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1d640 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  , ulong value);.
1d650 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1d660 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d670 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d690 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d6a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d6b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d6c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d6d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d6e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1d6f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d700 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1d710 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1d720 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e  te3_bind_null(In
1d730 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1d740 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1d750 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d760 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d770 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d780 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d790 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d7a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d7b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d7c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d7d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d7e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d7f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d800 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d810 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74  e3_bind_text(Int
1d820 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d830 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  dex, byte[] valu
1d840 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
1d850 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
1d860 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d870 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d880 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d890 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d8a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d8b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d8c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d8d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d8e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d8f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d900 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d910 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1d920 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
1d930 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
1d940 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1d950 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d960 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d970 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d980 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d990 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d9a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d9b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d9c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d9d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d9e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d9f0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1da00 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1da10 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20  er_index(IntPtr 
1da20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  stmt, byte[] str
1da30 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
1da40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1da50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1da60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1da70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1da80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1da90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1daa0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1dab0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dac0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1dad0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dae0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1daf0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f  qlite3_column_co
1db00 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
1db10 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1db20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1db30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1db40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1db50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1db60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1db70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1db80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1db90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dba0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dbb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dbc0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1dbd0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74  rCode sqlite3_st
1dbe0 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ep(IntPtr stmt);
1dbf0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dc00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dc10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dc20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dc30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dc40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dc50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dc60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dc70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dc80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dc90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dca0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1dcb0 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49  _stmt_readonly(I
1dcc0 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20  ntPtr stmt); /* 
1dcd0 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66  3.7.4+ */....#if
1dce0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1dcf0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1dd00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1dd10 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1dd20 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1dd30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1dd40 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1dd50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1dd60 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  n double sqlite3
1dd70 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49  _column_double(I
1dd80 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1dd90 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d  index);..#endif.
1dda0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ddb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ddc0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ddd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1dde0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ddf0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1de00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1de10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1de20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1de30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1de40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1de50 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1de60 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74  column_int(IntPt
1de70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1de80 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1de90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dea0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1deb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1dec0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ded0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1dee0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1def0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1df00 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
1df10 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1df20 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
1df30 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1df40 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1df50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1df60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1df70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1df80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1df90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1dfa0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dfb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1dfc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dfd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1dfe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dff0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1e000 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1e010 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
1e020 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1e030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e0a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e0b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e0c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e0d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e0e0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1e0f0 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50  olumn_bytes(IntP
1e100 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1e110 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1e120 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e130 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e140 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e150 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e160 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e170 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e180 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e190 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e1a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e1b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e1c0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e1d0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
1e1e0 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  s16(IntPtr stmt,
1e1f0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1e200 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e220 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e230 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e240 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e250 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e260 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e280 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e290 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e2a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e2b0 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
1e2c0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70  lite3_column_typ
1e2d0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1e2e0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1e2f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e300 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e320 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e330 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e350 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e360 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e370 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e380 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e390 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e3a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e3b0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
1e3c0 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  llation(IntPtr d
1e3d0 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
1e3e0 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  e, int nType, In
1e3f0 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
1e400 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e  iteCollation fun
1e410 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  c);....#if !PLAT
1e420 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e430 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e440 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e450 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e460 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e470 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e480 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e490 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e4a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e4b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e4c0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1e4d0 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f  te3_aggregate_co
1e4e0 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  unt(IntPtr conte
1e4f0 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
1e500 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e510 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e520 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e530 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e540 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e550 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e560 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e570 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e580 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e590 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e5a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1e5b0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c  sqlite3_value_bl
1e5c0 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  ob(IntPtr p);...
1e5d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e5e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e5f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e600 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e610 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e630 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e640 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e650 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e660 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e670 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e680 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
1e690 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72  lue_bytes(IntPtr
1e6a0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
1e6b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e6c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e6d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e6e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e6f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e700 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e710 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e720 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e730 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e740 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e750 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e760 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
1e770 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  16(IntPtr p);...
1e780 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e790 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e7a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e7b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e7c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e7d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e7e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
1e7f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e800 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
1e810 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
1e820 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65  e(IntPtr p);..#e
1e830 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1e840 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e850 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e860 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e870 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e880 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e890 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e8a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e8b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e8c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e8d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e8e0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e8f0 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49  ite3_value_int(I
1e900 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1e910 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e920 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e930 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e940 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e950 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e960 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e970 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1e980 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e990 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76  n long sqlite3_v
1e9a0 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74  alue_int64(IntPt
1e9b0 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  r p);..#endif...
1e9c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e9d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e9e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e9f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1ea00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ea10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ea20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ea30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ea40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1ea50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ea60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ea70 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73  n TypeAffinity s
1ea80 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70  qlite3_value_typ
1ea90 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
1eaa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1eab0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ead0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1eae0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1eaf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eb00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1eb10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1eb20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1eb30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1eb40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1eb50 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1eb60 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72  sult_blob(IntPtr
1eb70 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1eb80 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
1eb90 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  e, IntPtr pvRese
1eba0 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
1ebb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ebc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ebd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ebe0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ebf0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ec00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ec10 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1ec20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1ec30 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1ec40 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  lt_double(IntPtr
1ec50 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65   context, double
1ec60 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
1ec70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ec80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ec90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1eca0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ecb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ecc0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ecd0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ece0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ecf0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ed00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ed10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ed20 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1ed30 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49  3_result_error(I
1ed40 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
1ed50 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e  yte[] strErr, in
1ed60 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
1ed70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ed80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ed90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1eda0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1edb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1edc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1edd0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ede0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1edf0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ee00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ee10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1ee20 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1ee30 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50  _error_code(IntP
1ee40 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69  tr context, SQLi
1ee50 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75  teErrorCode valu
1ee60 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1ee70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ee80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ee90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1eea0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1eeb0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1eec0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1eed0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1eee0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1eef0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ef00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ef10 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1ef20 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
1ef30 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20  r_toobig(IntPtr 
1ef40 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
1ef50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ef60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ef70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ef80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ef90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1efa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1efb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1efc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1efd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1efe0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1eff0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1f000 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1f010 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e  t_error_nomem(In
1f020 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
1f030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f0a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f0b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f0c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f0d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f0e0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1f0f0 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74  result_value(Int
1f100 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74  Ptr context, Int
1f110 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  Ptr value);....#
1f120 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f130 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f150 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f160 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f170 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f180 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f190 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f1a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f1b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f1c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f1d0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1f1e0 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74  ult_zeroblob(Int
1f1f0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
1f200 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
1f210 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f220 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f230 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f240 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f250 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f260 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f270 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f280 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f290 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f2a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f2b0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1f2c0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1f2d0 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  int(IntPtr conte
1f2e0 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  xt, int value);.
1f2f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f300 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f310 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f320 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f330 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f340 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f350 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1f360 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f370 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1f380 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1f390 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  4(IntPtr context
1f3a0 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
1f3b0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1f3c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f3d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f3e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f3f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f400 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f410 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f420 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f430 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f440 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f450 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f460 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1f470 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e  sqlite3_result_n
1f480 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ull(IntPtr conte
1f490 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
1f4a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f4b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1f4c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f4d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1f4e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1f4f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f500 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f510 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f520 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1f530 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f540 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1f550 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
1f560 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1f570 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
1f580 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
1f590 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
1f5a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f5b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f5c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f5d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f5e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f5f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f600 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f610 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f620 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f630 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f640 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f650 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1f660 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65  _aggregate_conte
1f670 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
1f680 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d  t, int nBytes);.
1f690 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f6a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f6b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f6c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f6d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f6e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f6f0 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
1f700 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1f710 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
1f720 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f730 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
1f740 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1f750 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
1f760 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f770 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f780 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f790 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e  3_bind_text16(In
1f7a0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1f7b0 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c  ndex, string val
1f7c0 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
1f7d0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
1f7e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f7f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f800 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f820 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f830 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f840 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1f850 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1f860 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1f870 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f880 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1f890 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1f8a0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1f8b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f8c0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1f8d0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1f8e0 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63  error16(IntPtr c
1f8f0 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73  ontext, string s
1f900 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e  trName, int nLen
1f910 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f920 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f930 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f940 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f950 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f960 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f970 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
1f980 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
1f990 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
1f9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
1f9c0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1f9d0 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
1f9e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f9f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1fa00 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1fa10 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63  _text16(IntPtr c
1fa20 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73  ontext, string s
1fa30 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e  trName, int nLen
1fa40 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1fa50 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  ved);....#if INT
1fa60 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e  EROP_CODEC || IN
1fa70 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45  TEROP_INCLUDE_SE
1fa80 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
1fa90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1faa0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1fab0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1fac0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1fad0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1fae0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1faf0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1fb00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1fb10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1fb20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1fb30 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1fb40 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28  ode sqlite3_key(
1fb50 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1fb60 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
1fb70 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
1fb80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fb90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fba0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fbb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fbc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fbd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1fbe0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1fbf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fc00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1fc10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fc20 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1fc30 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1fc40 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c  rekey(IntPtr db,
1fc50 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74   byte[] key, int
1fc60 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69   keylen);..#endi
1fc70 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  f....#if INTEROP
1fc80 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d  _INCLUDE_ZIPVFS.
1fc90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1fca0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fcb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fcc0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1fcd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1fce0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1fcf0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1fd00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1fd10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1fd20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1fd30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1fd40 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69  n void zipvfsIni
1fd50 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  t_v2();....#if !
1fd60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fd70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fd80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fd90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1fda0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1fdb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1fdc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1fdd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1fde0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1fdf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fe00 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1fe10 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69   zipvfsInit_v3(i
1fe20 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65  nt regDflt);..#e
1fe30 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1fe40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fe50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1fe60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fe70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1fe80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1fe90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fea0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1feb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fec0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1fed0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1fee0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1fef0 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68  lite3_progress_h
1ff00 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62  andler(IntPtr db
1ff10 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74  , int ops, SQLit
1ff20 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63  eProgressCallbac
1ff30 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1ff40 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1ff50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ff60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ff70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ff80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ff90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ffa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ffb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ffc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ffd0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ffe0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fff0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
20000 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  tr sqlite3_set_a
20010 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72  uthorizer(IntPtr
20020 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f   db, SQLiteAutho
20030 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75  rizerCallback fu
20040 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
20050 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
20060 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20070 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20090 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
200a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
200b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
200c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
200d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
200e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
200f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20100 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
20110 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
20120 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
20130 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61  LiteUpdateCallba
20140 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
20150 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
20160 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20170 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20180 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20190 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
201a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
201b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
201c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
201d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
201e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
201f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20200 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20210 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d  Ptr sqlite3_comm
20220 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  it_hook(IntPtr d
20230 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  b, SQLiteCommitC
20240 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
20250 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
20260 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20270 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20280 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20290 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
202a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
202b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
202c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
202d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
202e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
202f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20300 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20310 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
20320 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62  _trace(IntPtr db
20330 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
20340 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
20350 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20  tr pvUser);.... 
20360 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
20370 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b  te3_config() tak
20380 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
20390 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
203a0 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
203b0 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
203c0 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
203d0 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61  ssible calls tha
203e0 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65  t we want to use
203f0 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20400 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20410 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20420 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
20430 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
20440 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
20450 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20460 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20470 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20480 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20490 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
204a0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
204b0 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
204c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
204d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
204e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
204f0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
20500 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66  _none(SQLiteConf
20510 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a  igOpsEnum op);..
20520 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20530 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20540 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20550 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
20560 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
20570 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
20580 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20590 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
205a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
205b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
205c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
205d0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
205e0 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
205f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20600 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20610 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20620 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
20630 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  int(SQLiteConfig
20640 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
20650 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
20660 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20670 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
20680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20690 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
206a0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
206b0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
206c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
206d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
206e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
206f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20700 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
20710 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
20720 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
20730 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20740 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
20750 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
20760 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c  3_config_log(SQL
20770 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
20780 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61   op, SQLiteLogCa
20790 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
207a0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
207b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
207c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
207d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
207e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
207f0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
20800 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  _db_config", Cal
20810 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20820 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20830 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20840 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20850 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
20860 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
20870 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d  te3_db_config")]
20880 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20890 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
208a0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
208b0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f  Code sqlite3_db_
208c0 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e  config_int_refin
208d0 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  t(IntPtr db, SQL
208e0 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e  iteConfigDbOpsEn
208f0 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65  um op, int value
20900 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74  , ref int result
20910 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20920 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20930 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20940 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20950 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20960 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20970 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20980 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20990 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
209a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
209b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
209c0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
209d0 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68  lite3_rollback_h
209e0 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
209f0 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c  QLiteRollbackCal
20a00 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
20a10 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
20a20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20a30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20a40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20a50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20a60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20a70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20a80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20a90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20aa0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20ab0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20ac0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20ad0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
20ae0 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  b_handle(IntPtr 
20af0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
20b00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20b10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20b20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20b30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20b40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20b50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20b60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20b80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20b90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20ba0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20bb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20bc0 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65  e3_db_release_me
20bd0 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b  mory(IntPtr db);
20be0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20bf0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20c00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20c10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20c20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20c30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20c40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20c50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20c70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20c80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20c90 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20ca0 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28  te3_db_filename(
20cb0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
20cc0 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  r dbName);....#i
20cd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20ce0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20cf0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20d00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20d10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20d20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20d30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20d40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20d50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20d60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20d70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
20d80 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65  nt sqlite3_db_re
20d90 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62  adonly(IntPtr db
20da0 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29  , IntPtr dbName)
20db0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20dc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20dd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20de0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20df0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
20e00 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
20e10 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  e", CallingConve
20e20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20e30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20e40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20e60 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
20e70 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  = "sqlite3_db_fi
20e80 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69  lename")]..#endi
20e90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20ea0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
20eb0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
20ec0 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49  filename_bytes(I
20ed0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
20ee0 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
20ef0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20f00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20f10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20f20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20f30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20f40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20f50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20f70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20f80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20f90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
20fa0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78  tPtr sqlite3_nex
20fb0 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62  t_stmt(IntPtr db
20fc0 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  , IntPtr stmt);.
20fd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20fe0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20ff0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21000 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21010 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21020 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21030 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21040 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21050 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21060 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21070 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21080 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21090 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  ode sqlite3_exec
210a0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
210b0 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74  [] strSql, IntPt
210c0 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e  r pvCallback, In
210d0 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65  tPtr pvParam, re
210e0 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  f IntPtr errMsg)
210f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21100 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21110 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21120 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21130 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21140 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21150 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21160 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21170 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21180 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21190 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
211a0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
211b0 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79  3_release_memory
211c0 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d  (int nBytes);...
211d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
211e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
211f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21200 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21210 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21220 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21230 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21240 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21250 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21260 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21270 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21280 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65  n int sqlite3_ge
21290 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74  t_autocommit(Int
212a0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
212b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
212c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
212d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
212e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
212f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21300 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21310 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21320 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21330 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21340 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21350 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
21360 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
21370 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65  ite3_extended_re
21380 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74  sult_codes(IntPt
21390 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29  r db, int onoff)
213a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
213b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
213c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
213d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
213e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
213f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21400 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21410 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21420 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21430 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21440 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21450 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21460 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72  rCode sqlite3_er
21470 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
21480 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21490 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
214a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
214b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
214c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
214d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
214e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
214f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21500 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21510 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21520 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21530 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21540 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
21550 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49  tended_errcode(I
21560 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
21570 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21580 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21590 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
215a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
215b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
215c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
215d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
215e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
215f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21600 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21610 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
21620 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
21630 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72  rstr(SQLiteError
21640 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37  Code rc); /* 3.7
21650 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f  .15+ */....    /
21660 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
21670 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61  log() takes a va
21680 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20  riable argument 
21690 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f  list, we have to
216a0 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72   overload declar
216b0 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66  ations..    // f
216c0 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  or all possible 
216d0 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c  calls.  For now,
216e0 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70   we are only exp
216f0 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73  osing a single s
21700 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20  tring, and..    
21710 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65  // depend on the
21720 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61   caller to forma
21730 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23  t the string...#
21740 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21750 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21760 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21770 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21780 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21790 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
217a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
217b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
217c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
217d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
217e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
217f0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67  void sqlite3_log
21800 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  (SQLiteErrorCode
21810 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b   iErrCode, byte[
21820 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23  ] zFormat);....#
21830 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21840 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21850 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21860 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21870 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21880 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21890 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
218a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
218b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
218c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
218d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
218e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
218f0 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
21900 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20  trol(IntPtr db, 
21910 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20  byte[] zDbName, 
21920 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70  int op, IntPtr p
21930 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Arg);....#if !PL
21940 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21950 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21960 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21970 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21980 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21990 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
219a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
219b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
219c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
219d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
219e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
219f0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
21a00 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74  init(IntPtr dest
21a10 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74  Db, byte[] zDest
21a20 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75  Name, IntPtr sou
21a30 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53  rceDb, byte[] zS
21a40 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ourceName);....#
21a50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21a60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21a70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21a80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21a90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21aa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21ab0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21ac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21ad0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21ae0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21af0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21b00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
21b10 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73  sqlite3_backup_s
21b20 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75  tep(IntPtr backu
21b30 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a  p, int nPage);..
21b40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21b50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21b60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21b70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21b80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21b90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21ba0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21bb0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21bc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21bd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21be0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21bf0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
21c00 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28  ackup_remaining(
21c10 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
21c20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21c30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21c40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21c50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21c60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21c70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21c80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21c90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21ca0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21cb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21cc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21cd0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
21ce0 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74  backup_pagecount
21cf0 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
21d00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21d20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21d30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21d40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21d50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21d60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21d70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21d80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21da0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21db0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
21dc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
21dd0 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62  b_close(IntPtr b
21de0 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lob);....#if !PL
21df0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21e00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21e10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21e20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21e30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21e40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21e50 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21e60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21e70 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21e80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21e90 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
21ea0 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73  lite3_blob_bytes
21eb0 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
21ec0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21ed0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21ee0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21ef0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21f00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21f10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21f20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21f30 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21f40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21f50 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21f60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21f70 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21f80 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
21f90 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  open(IntPtr db, 
21fa0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
21fb0 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
21fc0 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c  yte[] colName, l
21fd0 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66  ong rowId, int f
21fe0 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72  lags, ref IntPtr
21ff0 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69   ptrBlob);....#i
22000 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22010 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22030 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22040 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22060 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
22070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22080 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
22090 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
220a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
220b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
220c0 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64  qlite3_blob_read
220d0 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d  (IntPtr blob, [M
220e0 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67  arshalAs(Unmanag
220f0 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d  edType.LPArray)]
22100 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20   byte[] buffer, 
22110 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f  int count, int o
22120 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ffset);....#if !
22130 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22140 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22160 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22170 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22180 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22190 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
221a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
221b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
221c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
221d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
221e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
221f0 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28  te3_blob_reopen(
22200 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e  IntPtr blob, lon
22210 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66  g rowId);....#if
22220 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22230 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22240 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22250 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22260 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22270 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22280 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
222a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
222b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
222c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
222d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
222e0 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65  lite3_blob_write
222f0 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d  (IntPtr blob, [M
22300 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67  arshalAs(Unmanag
22310 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d  edType.LPArray)]
22320 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20   byte[] buffer, 
22330 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f  int count, int o
22340 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ffset);....#if !
22350 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22360 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22370 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22380 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22390 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
223a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
223b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
223c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
223d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
223e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
223f0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
22400 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
22410 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
22420 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
22430 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66  tr zSQL);....#if
22440 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22450 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22460 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22470 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22480 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22490 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
224a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
224b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
224c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
224d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
224e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
224f0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72  tPtr sqlite3_mpr
22500 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d  intf(IntPtr form
22510 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d  at, __arglist);.
22520 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
22530 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65  ...    // SQLite
22540 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20   API calls that 
22550 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  are provided by 
22560 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74  "well-known" ext
22570 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79  ensions that may
22580 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a   be statically..
22590 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69      // linked wi
225a0 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
225b0 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  re native librar
225c0 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75  y currently in u
225d0 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  se...    #region
225e0 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74   extension sqlit
225f0 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20  e api calls..   
22600 20 23 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c   #region virtual
22610 20 74 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45   table..#if INTE
22620 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
22630 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
22640 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22650 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22660 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22670 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22680 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22690 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
226a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
226b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
226c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
226d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
226e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
226f0 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
22700 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  able_module(IntP
22710 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
22720 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f  me, ref sqlite3_
22730 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49  module module, I
22740 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
22750 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  a, xDestroyModul
22760 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a  e xDestroy);....
22770 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22780 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22790 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
227a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
227b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
227c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
227d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
227e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
227f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22800 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22810 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22820 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69   void sqlite3_di
22830 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  spose_module(Int
22840 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23  Ptr pModule);..#
22850 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
22860 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
22870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
228c0 23 72 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20  #region session 
228d0 65 78 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49  extension..#if I
228e0 4e 54 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45  NTEROP_SESSION_E
228f0 58 54 45 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50  XTENSION..#if !P
22900 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22910 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
22920 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
22930 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
22940 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22950 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22960 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
22970 20 69 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c   int xSessionFil
22980 74 65 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ter(IntPtr conte
22990 78 74 2c 20 49 6e 74 50 74 72 20 70 54 62 6c 4e  xt, IntPtr pTblN
229a0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
229b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
229c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
229d0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
229e0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
229f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22a00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22a10 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
22a20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43  SQLiteChangeSetC
22a30 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74 20 78 53  onflictResult xS
22a40 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49  essionConflict(I
22a50 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53  ntPtr context, S
22a60 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f  QLiteChangeSetCo
22a70 6e 66 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c  nflictType type,
22a80 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
22a90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22aa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22ab0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
22ac0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
22ad0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
22ae0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22af0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22b00 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c  nal delegate SQL
22b10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65  iteErrorCode xSe
22b20 73 73 69 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74  ssionInput(IntPt
22b30 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
22b40 72 20 70 44 61 74 61 2c 20 72 65 66 20 69 6e 74  r pData, ref int
22b50 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20   nData);....#if 
22b60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22b70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22b80 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
22b90 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
22ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22bb0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
22bc0 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
22bd0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
22be0 64 65 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  de xSessionOutpu
22bf0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
22c00 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20  , IntPtr pData, 
22c10 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20  int nData);.... 
22c20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
22c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22c70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22c80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22c90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22ca0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22cb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22cc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22cd0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22ce0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22cf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22d00 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22d10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22d20 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
22d30 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
22d40 6e 5f 63 72 65 61 74 65 28 49 6e 74 50 74 72 20  n_create(IntPtr 
22d50 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
22d60 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 65  e, ref IntPtr se
22d70 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
22d80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22d90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22da0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22db0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22dc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22dd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22de0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22df0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22e00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22e10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22e20 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
22e30 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
22e40 64 65 6c 65 74 65 28 49 6e 74 50 74 72 20 73 65  delete(IntPtr se
22e50 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
22e60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22e70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22e80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22e90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22ea0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22eb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22ec0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22ed0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22ee0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22ef0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22f00 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
22f10 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 65  sqlite3session_e
22f20 6e 61 62 6c 65 28 49 6e 74 50 74 72 20 73 65 73  nable(IntPtr ses
22f30 73 69 6f 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65  sion, int enable
22f40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22f50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22f60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22f70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22f80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22f90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22fa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22fb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22fc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22fd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22fe0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22ff0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
23000 65 33 73 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65  e3session_indire
23010 63 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  ct(IntPtr sessio
23020 6e 2c 20 69 6e 74 20 69 6e 64 69 72 65 63 74 29  n, int indirect)
23030 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23050 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23070 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23080 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23090 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
230a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
230b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
230c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
230d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
230e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
230f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
23100 73 69 6f 6e 5f 61 74 74 61 63 68 28 49 6e 74 50  sion_attach(IntP
23110 74 72 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65  tr session, byte
23120 5b 5d 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a  [] tblName);....
23130 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23140 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23150 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23160 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23170 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23180 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23190 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
231a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
231b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
231c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
231d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
231e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73   void sqlite3ses
231f0 73 69 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65  sion_table_filte
23200 72 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  r(IntPtr session
23210 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  , xSessionFilter
23220 20 78 46 69 6c 74 65 72 2c 20 49 6e 74 50 74 72   xFilter, IntPtr
23230 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
23240 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23250 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23270 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23280 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23290 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
232a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
232b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
232c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
232d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
232e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
232f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
23300 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68  qlite3session_ch
23310 61 6e 67 65 73 65 74 28 49 6e 74 50 74 72 20 73  angeset(IntPtr s
23320 65 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20  ession, ref int 
23330 6e 43 68 61 6e 67 65 53 65 74 2c 20 72 65 66 20  nChangeSet, ref 
23340 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65  IntPtr pChangeSe
23350 74 29 3b 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  t);...#if !PLATF
23360 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23370 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23380 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23390 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
233a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
233b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
233c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
233d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
233e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
233f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23400 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
23410 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65  orCode sqlite3se
23420 73 73 69 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74  ssion_diff(IntPt
23430 72 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b  r session, byte[
23440 5d 20 66 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79  ] fromDbName, by
23450 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65  te[] tblName, re
23460 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  f IntPtr errMsg)
23470 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23480 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23490 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
234a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
234b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
234c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
234d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
234e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
234f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23500 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23520 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23530 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
23540 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 28 49 6e  sion_patchset(In
23550 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65  tPtr session, re
23560 66 20 69 6e 74 20 6e 50 61 74 63 68 53 65 74 2c  f int nPatchSet,
23570 20 72 65 66 20 49 6e 74 50 74 72 20 70 50 61 74   ref IntPtr pPat
23580 63 68 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  chSet);....#if !
23590 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
235a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
235b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
235c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
235d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
235e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
235f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23610 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23620 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23630 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
23640 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
23650 73 65 6d 70 74 79 28 49 6e 74 50 74 72 20 73 65  sempty(IntPtr se
23660 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
23670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23690 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
236a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
236b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
236c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
236d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
236e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
236f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23700 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23710 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23720 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23730 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61  te3changeset_sta
23740 72 74 28 72 65 66 20 49 6e 74 50 74 72 20 69 74  rt(ref IntPtr it
23750 65 72 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61  erator, int nCha
23760 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70  ngeSet, IntPtr p
23770 43 68 61 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23  ChangeSet);....#
23780 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23790 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
237a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
237b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
237c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
237d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
237e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
237f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23800 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23810 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23820 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23830 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23840 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
23850 5f 6e 65 78 74 28 49 6e 74 50 74 72 20 69 74 65  _next(IntPtr ite
23860 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  rator);....#if !
23870 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23880 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23890 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
238a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
238b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
238c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
238d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
238e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
238f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23900 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23910 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23920 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23930 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 70 28  te3changeset_op(
23940 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
23950 20 72 65 66 20 49 6e 74 50 74 72 20 70 54 62 6c   ref IntPtr pTbl
23960 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e 43  Name, ref int nC
23970 6f 6c 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69  olumns, ref SQLi
23980 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69  teAuthorizerActi
23990 6f 6e 43 6f 64 65 20 6f 70 2c 20 72 65 66 20 69  onCode op, ref i
239a0 6e 74 20 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a  nt bIndirect);..
239b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
239c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
239d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
239e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
239f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23a00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23a10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23a20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23a30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23a40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23a50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23a60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
23a70 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
23a80 73 65 74 5f 70 6b 28 49 6e 74 50 74 72 20 69 74  set_pk(IntPtr it
23a90 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50  erator, ref IntP
23aa0 74 72 20 70 50 72 69 6d 61 72 79 4b 65 79 73 2c  tr pPrimaryKeys,
23ab0 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e   ref int nColumn
23ac0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
23ad0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23ae0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23af0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23b00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23b10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23b20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23b30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23b40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23b50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23b60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23b70 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
23b80 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
23b90 68 61 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74  hangeset_old(Int
23ba0 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
23bb0 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72  t columnIndex, r
23bc0 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65  ef IntPtr pValue
23bd0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23be0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23bf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23c00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23c10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23c20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23c30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23c40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23c50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23c60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23c70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23c80 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
23c90 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
23ca0 61 6e 67 65 73 65 74 5f 6e 65 77 28 49 6e 74 50  angeset_new(IntP
23cb0 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
23cc0 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65   columnIndex, re
23cd0 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29  f IntPtr pValue)
23ce0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23cf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23d00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23d10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23d20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23d30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23d40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23d50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23d70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23d80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23d90 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23da0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
23db0 6e 67 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28  ngeset_conflict(
23dc0 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
23dd0 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78   int columnIndex
23de0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 61  , ref IntPtr pVa
23df0 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
23e00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23e10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23e20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23e30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23e40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23e50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23e60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23e70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23e80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23e90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23ea0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
23eb0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
23ec0 33 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f  3changeset_fk_co
23ed0 6e 66 6c 69 63 74 73 28 49 6e 74 50 74 72 20 69  nflicts(IntPtr i
23ee0 74 65 72 61 74 6f 72 2c 20 72 65 66 20 69 6e 74  terator, ref int
23ef0 20 63 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a   conflicts);....
23f00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23f10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23f20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23f30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23f40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23f50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23f60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23f70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23f80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23f90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23fa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23fb0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
23fc0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
23fd0 74 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74  t_finalize(IntPt
23fe0 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a  r iterator);....
23ff0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24000 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24010 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24020 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24030 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24050 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24060 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24070 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24080 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24090 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
240a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
240b0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
240c0 74 5f 69 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e  t_invert(int nIn
240d0 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 72 65  , IntPtr pIn, re
240e0 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20  f int nOut, ref 
240f0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
24100 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24110 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24120 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24130 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24140 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24150 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24160 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24170 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24180 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24190 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
241a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
241b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
241c0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
241d0 65 74 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41  et_concat(int nA
241e0 2c 20 49 6e 74 50 74 72 20 70 41 2c 20 69 6e 74  , IntPtr pA, int
241f0 20 6e 42 2c 20 49 6e 74 50 74 72 20 70 42 2c 20   nB, IntPtr pB, 
24200 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65  ref int nOut, re
24210 66 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  f IntPtr pOut);.
24220 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24230 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24240 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24250 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24260 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24270 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24280 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24290 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
242a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
242b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
242c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
242d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
242e0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
242f0 65 67 72 6f 75 70 5f 6e 65 77 28 72 65 66 20 49  egroup_new(ref I
24300 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75  ntPtr changeGrou
24310 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
24320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24330 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24340 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24350 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24360 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24370 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24380 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
243a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
243b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
243c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
243d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
243e0 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 28 49  hangegroup_add(I
243f0 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75  ntPtr changeGrou
24400 70 2c 20 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e  p, int nData, In
24410 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a  tPtr pData);....
24420 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24430 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24440 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24450 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24460 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24470 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24480 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24490 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
244a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
244b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
244c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
244d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
244e0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
244f0 6f 75 70 5f 6f 75 74 70 75 74 28 49 6e 74 50 74  oup_output(IntPt
24500 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 72  r changeGroup, r
24510 65 66 20 69 6e 74 20 6e 44 61 74 61 2c 20 72 65  ef int nData, re
24520 66 20 49 6e 74 50 74 72 20 70 44 61 74 61 29 3b  f IntPtr pData);
24530 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24540 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24550 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24570 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24580 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24590 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
245a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
245b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
245c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
245d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
245e0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
245f0 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c  3changegroup_del
24600 65 74 65 28 49 6e 74 50 74 72 20 63 68 61 6e 67  ete(IntPtr chang
24610 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  eGroup);....#if 
24620 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24630 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24640 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24650 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24660 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24670 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24680 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24690 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
246a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
246b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
246c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
246d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
246e0 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70  ite3changeset_ap
246f0 70 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20 69  ply(IntPtr db, i
24700 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49  nt nChangeSet, I
24710 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74  ntPtr pChangeSet
24720 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  , xSessionFilter
24730 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69   xFilter, xSessi
24740 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66  onConflict xConf
24750 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e  lict, IntPtr con
24760 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
24770 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24780 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24790 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
247a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
247b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
247c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
247d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
247e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
247f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
24800 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24810 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24820 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24830 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c  e3changeset_appl
24840 79 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 64 62  y_strm(IntPtr db
24850 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
24860 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
24870 49 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74  In, xSessionFilt
24880 65 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73  er xFilter, xSes
24890 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f  sionConflict xCo
248a0 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63  nflict, IntPtr c
248b0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
248c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
248d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
248e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
248f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24900 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24910 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24920 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24930 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24940 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24950 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24960 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24970 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24980 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f  ite3changeset_co
24990 6e 63 61 74 5f 73 74 72 6d 28 78 53 65 73 73 69  ncat_strm(xSessi
249a0 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 41 2c  onInput xInputA,
249b0 20 49 6e 74 50 74 72 20 70 49 6e 41 2c 20 78 53   IntPtr pInA, xS
249c0 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
249d0 75 74 42 2c 20 49 6e 74 50 74 72 20 70 49 6e 42  utB, IntPtr pInB
249e0 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74  , xSessionOutput
249f0 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72   xOutput, IntPtr
24a00 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   pOut);....#if !
24a10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24a20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24a30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24a40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24a50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24a60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24a70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24a80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24a90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24aa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24ab0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
24ac0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24ad0 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76  te3changeset_inv
24ae0 65 72 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f  ert_strm(xSessio
24af0 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
24b00 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73  ntPtr pIn, xSess
24b10 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
24b20 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
24b30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24b40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24b50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24b60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24b70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24b80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24b90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24ba0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24bb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24bc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24bd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24be0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24bf0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
24c00 67 65 73 65 74 5f 73 74 61 72 74 5f 73 74 72 6d  geset_start_strm
24c10 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65 72  (ref IntPtr iter
24c20 61 74 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e  ator, xSessionIn
24c30 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50  put xInput, IntP
24c40 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20  tr pIn);....#if 
24c50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24c60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24c70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24c80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24c90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24cb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24cc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24cd0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24d00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24d10 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e  ite3session_chan
24d20 67 65 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74  geset_strm(IntPt
24d30 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
24d40 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
24d50 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
24d60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24d70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24d80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24d90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24db0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24dc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24dd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24de0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24df0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24e00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24e10 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24e20 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
24e30 69 6f 6e 5f 70 61 74 63 68 73 65 74 5f 73 74 72  ion_patchset_str
24e40 6d 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  m(IntPtr session
24e50 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74  , xSessionOutput
24e60 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72   xOutput, IntPtr
24e70 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   pOut);....#if !
24e80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24e90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24ea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24eb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24ec0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24ed0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24ee0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24ef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24f00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24f10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24f20 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
24f30 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24f40 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61  te3changegroup_a
24f50 64 64 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63  dd_strm(IntPtr c
24f60 68 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73  hangeGroup, xSes
24f70 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
24f80 2c 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a  , IntPtr pIn);..
24f90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24fa0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24fb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24fc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24fd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24fe0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24ff0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25000 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25020 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25030 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25040 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25050 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
25060 67 72 6f 75 70 5f 6f 75 74 70 75 74 5f 73 74 72  group_output_str
25070 6d 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  m(IntPtr changeG
25080 72 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75  roup, xSessionOu
25090 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e  tput xOutput, In
250a0 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e  tPtr pOut);..#en
250b0 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
250c0 69 6f 6e 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  ion..    #endreg
250d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
250e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25120 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
25130 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74  egion sqlite int
25140 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28  erop api calls (
25150 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
25160 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69  mework only)..#i
25170 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
25180 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21  CTFRAMEWORK && !
25190 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
251a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
251b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
251c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
251d0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
251e0 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
251f0 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
25200 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
25210 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20  ong rowId);.... 
25220 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25230 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
25240 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25250 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
25260 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f  te3_memory_used_
25270 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67  interop(ref long
25280 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
25290 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
252a0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
252b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
252c0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
252d0 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
252e0 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65  r_interop(int re
252f0 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e  setFlag, ref lon
25300 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20  g bytes);....   
25310 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25320 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
25330 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25340 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
25350 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
25360 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  d_double_interop
25370 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
25380 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
25390 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
253a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
253b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
253c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
253d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
253e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
253f0 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
25400 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
25410 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
25420 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
25430 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25440 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
25450 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
25460 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
25470 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  p")]..    intern
25480 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25490 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
254a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
254b0 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
254c0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
254d0 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76  dex, ref ulong v
254e0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
254f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25500 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
25510 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25520 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
25530 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
25540 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
25550 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
25560 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
25570 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
25580 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25590 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
255a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
255b0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
255c0 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
255d0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
255e0 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
255f0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
25600 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25610 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
25620 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25630 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
25640 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  lue_double_inter
25650 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
25660 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
25670 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
25680 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25690 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
256a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
256b0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
256c0 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
256d0 74 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20  tr p, ref Int64 
256e0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
256f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25700 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
25710 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25720 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
25730 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
25740 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
25750 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65  text, ref double
25760 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
25770 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25780 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
25790 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
257a0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
257b0 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
257c0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
257d0 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20  text, ref Int64 
257e0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
257f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25800 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
25810 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25820 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
25830 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
25840 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72  ble_module_inter
25850 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  op(..        Int
25860 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
25870 61 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64  ame, IntPtr pMod
25880 75 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f  ule, int iVersio
25890 6e 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61  n, xCreate xCrea
258a0 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f  te,..        xCo
258b0 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20  nnect xConnect, 
258c0 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74  xBestIndex xBest
258d0 49 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65  Index, xDisconne
258e0 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d  ct xDisconnect,.
258f0 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
25900 79 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65  y xDestroy, xOpe
25910 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20  n xOpen, xClose 
25920 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20  xClose, xFilter 
25930 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20  xFilter,..      
25940 20 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78    xNext xNext, x
25950 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d  Eof xEof, xColum
25960 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49  n xColumn, xRowI
25970 64 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74  d xRowId, xUpdat
25980 65 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e xUpdate,..    
25990 20 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69      xBegin xBegi
259a0 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20  n, xSync xSync, 
259b0 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c  xCommit xCommit,
259c0 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
259d0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78  back,..        x
259e0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
259f0 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e  ndFunction, xRen
25a00 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61  ame xRename, xSa
25a10 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
25a20 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65  nt,..        xRe
25a30 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20  lease xRelease, 
25a40 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c  xRollbackTo xRol
25a50 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20  lbackTo, IntPtr 
25a60 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20  pClientData,..  
25a70 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f        xDestroyMo
25a80 64 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64  dule xDestroyMod
25a90 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
25aa0 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43     // PLATFORM_C
25ab0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
25ac0 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
25ad0 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  ARD..    #endreg
25ae0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
25af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
25b40 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c  egion Native Del
25b50 65 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45  egates..#if INTE
25b60 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
25b70 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
25b80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25b90 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
25ba0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
25bb0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
25bc0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
25bd0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
25be0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
25bf0 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28  rorCode xCreate(
25c00 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
25c10 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49   pDb,..        I
25c20 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
25c30 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
25c40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
25c50 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
25c60 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
25c70 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
25c80 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
25c90 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
25cf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25d00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
25d10 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
25d20 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
25d30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25d40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
25d50 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
25d60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
25d70 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
25d80 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
25d90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
25da0 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  x,..        int 
25db0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
25dc0 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
25dd0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
25de0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
25df0 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
25e00 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
25e10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25e60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25e70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25e80 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
25e90 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
25ea0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25eb0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
25ec0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
25ed0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
25ee0 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28  Code xBestIndex(
25ef0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
25f00 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
25f10 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a   IntPtr pIndex..
25f20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
25f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
25f80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25f90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25fa0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
25fb0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
25fc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25fd0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
25fe0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
25ff0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
26000 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  e xDisconnect(..
26010 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26020 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
26030 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26080 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26090 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
260a0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
260b0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
260c0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
260d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
260e0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
260f0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26100 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79  rorCode xDestroy
26110 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26120 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
26130 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26180 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
26190 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
261a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
261b0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
261c0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
261d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
261e0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
261f0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
26200 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e  eErrorCode xOpen
26210 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26220 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
26230 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75    ref IntPtr pCu
26240 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
26250 20 20 20 20 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 2f 2f 2f  ////////////////
26270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
262a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
262b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
262c0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
262d0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
262e0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
262f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26300 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26310 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26320 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d  rorCode xClose(.
26330 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26340 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
26350 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263a0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
263b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
263c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
263d0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
263e0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
263f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26400 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
26410 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
26420 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74  eErrorCode xFilt
26430 65 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  er(..        Int
26440 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
26450 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d        int idxNum
26460 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
26470 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
26480 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
26490 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
264a0 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  v..    );....   
264b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
264c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26500 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26510 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26520 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
26530 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
26540 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26550 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
26560 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
26570 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
26580 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20  Code xNext(..   
26590 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
265a0 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
265b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
265c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26600 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26610 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26620 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
26630 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
26640 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26650 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
26660 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
26670 6c 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28  legate int xEof(
26680 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
26690 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
266a0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
266b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266f0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
26700 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26710 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
26720 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
26730 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
26740 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26750 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
26760 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
26770 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c  teErrorCode xCol
26780 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  umn(..        In
26790 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
267a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
267b0 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  ontext,..       
267c0 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
267d0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
267e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26820 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
26830 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26840 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26850 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26860 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26870 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26880 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26890 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
268a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
268b0 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49  owId(..        I
268c0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
268d0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
268e0 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
268f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
26900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26940 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
26950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26960 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
26970 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
26980 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
26990 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
269a0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
269b0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
269c0 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74  ErrorCode xUpdat
269d0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
269e0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
269f0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
26a00 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
26a10 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
26a20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
26a30 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
26a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a80 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
26a90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26aa0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26ab0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26ac0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26ad0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26ae0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26af0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
26b00 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
26b10 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  egin(..        I
26b20 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
26b30 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
26b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
26b90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26ba0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
26bb0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
26bc0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
26bd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26be0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
26bf0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
26c00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
26c10 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49  Sync(..        I
26c20 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
26c30 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
26c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
26c90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26ca0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
26cb0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
26cc0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
26cd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26ce0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
26cf0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
26d00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
26d10 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
26d20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
26d30 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
26d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
26d90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26da0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26db0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
26dc0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
26dd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26de0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
26df0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
26e00 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26e10 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20   xRollback(..   
26e20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
26e30 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
26e40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26e90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26ea0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26eb0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
26ec0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
26ed0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26ee0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
26ef0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
26f00 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75  gate int xFindFu
26f10 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
26f20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
26f30 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67          int nArg
26f40 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
26f50 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  r zName,..      
26f60 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c    ref SQLiteCall
26f70 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  back callback,..
26f80 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
26f90 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20  tr pUserData..  
26fa0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ff0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
27000 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27010 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27020 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
27030 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
27040 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27050 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
27060 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
27070 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27080 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
27090 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
270a0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
270b0 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  zNew..    );....
270c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
270d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27110 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27120 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27130 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27140 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27150 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27170 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27180 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27190 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69  rorCode xSavepoi
271a0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nt(..        Int
271b0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
271c0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
271d0 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
271e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
271f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27230 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27240 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27250 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
27260 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
27270 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27280 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
27290 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
272a0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
272b0 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d  rCode xRelease(.
272c0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
272d0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
272e0 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
272f0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
27300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27340 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27350 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27360 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27370 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
27380 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
27390 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
273a0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
273b0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
273c0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
273d0 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  e xRollbackTo(..
273e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
273f0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
27400 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
27410 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
27420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27460 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
27470 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27480 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27490 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
274a0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
274b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
274c0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
274d0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
274e0 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f   void xDestroyMo
274f0 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69  dule(IntPtr pCli
27500 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69  entData);..#endi
27510 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
27520 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27570 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
27580 69 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63  ion Native Struc
27590 74 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  tures..#if INTER
275a0 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
275b0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
275c0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
275d0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
275e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
275f0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d   sqlite3_module.
27600 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
27610 2f 2a 20 20 20 30 20 2a 2f 20 70 75 62 6c 69 63  /*   0 */ public
27620 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a   int iVersion;..
27630 20 20 20 20 20 20 20 20 2f 2a 20 20 20 38 20 2a          /*   8 *
27640 2f 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65  / public xCreate
27650 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20   xCreate;..     
27660 20 20 20 2f 2a 20 20 31 36 20 2a 2f 20 70 75 62     /*  16 */ pub
27670 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f  lic xConnect xCo
27680 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20  nnect;..        
27690 2f 2a 20 20 32 34 20 2a 2f 20 70 75 62 6c 69 63  /*  24 */ public
276a0 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73   xBestIndex xBes
276b0 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  tIndex;..       
276c0 20 2f 2a 20 20 33 32 20 2a 2f 20 70 75 62 6c 69   /*  32 */ publi
276d0 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44  c xDisconnect xD
276e0 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20  isconnect;..    
276f0 20 20 20 20 2f 2a 20 20 34 30 20 2a 2f 20 70 75      /*  40 */ pu
27700 62 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44  blic xDestroy xD
27710 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20  estroy;..       
27720 20 2f 2a 20 20 34 38 20 2a 2f 20 70 75 62 6c 69   /*  48 */ publi
27730 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a  c xOpen xOpen;..
27740 20 20 20 20 20 20 20 20 2f 2a 20 20 35 36 20 2a          /*  56 *
27750 2f 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20  / public xClose 
27760 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  xClose;..       
27770 20 2f 2a 20 20 36 34 20 2a 2f 20 70 75 62 6c 69   /*  64 */ publi
27780 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  c xFilter xFilte
27790 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  r;..        /*  
277a0 37 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 4e 65  72 */ public xNe
277b0 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20  xt xNext;..     
277c0 20 20 20 2f 2a 20 20 38 30 20 2a 2f 20 70 75 62     /*  80 */ pub
277d0 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a  lic xEof xEof;..
277e0 20 20 20 20 20 20 20 20 2f 2a 20 20 38 38 20 2a          /*  88 *
277f0 2f 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e  / public xColumn
27800 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   xColumn;..     
27810 20 20 20 2f 2a 20 20 39 36 20 2a 2f 20 70 75 62     /*  96 */ pub
27820 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49  lic xRowId xRowI
27830 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  d;..        /* 1
27840 30 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 55 70  04 */ public xUp
27850 64 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20  date xUpdate;.. 
27860 20 20 20 20 20 20 20 2f 2a 20 31 31 32 20 2a 2f         /* 112 */
27870 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78   public xBegin x
27880 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20  Begin;..        
27890 2f 2a 20 31 32 30 20 2a 2f 20 70 75 62 6c 69 63  /* 120 */ public
278a0 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20   xSync xSync;.. 
278b0 20 20 20 20 20 20 20 2f 2a 20 31 32 38 20 2a 2f         /* 128 */
278c0 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20   public xCommit 
278d0 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20  xCommit;..      
278e0 20 20 2f 2a 20 31 33 36 20 2a 2f 20 70 75 62 6c    /* 136 */ publ
278f0 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f  ic xRollback xRo
27900 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
27910 20 2f 2a 20 31 34 34 20 2a 2f 20 70 75 62 6c 69   /* 144 */ publi
27920 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20  c xFindFunction 
27930 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a  xFindFunction;..
27940 20 20 20 20 20 20 20 20 2f 2a 20 31 35 32 20 2a          /* 152 *
27950 2f 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65  / public xRename
27960 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20   xRename;..     
27970 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64     /* The method
27980 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76  s above are in v
27990 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20  ersion 1 of the 
279a0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
279b0 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63           * objec
279c0 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20  t.  Those below 
279d0 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  are for version 
279e0 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a  2 and greater. *
279f0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  /..        /* 16
27a00 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 53 61 76  0 */ public xSav
27a10 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e  epoint xSavepoin
27a20 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  t;..        /* 1
27a30 36 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 65  68 */ public xRe
27a40 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d  lease xRelease;.
27a50 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 37 36 20  .        /* 176 
27a60 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62  */ public xRollb
27a70 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
27a80 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  o;..    }....   
27a90 20 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 2f 2f  ////////////////
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27ae0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
27af0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
27b00 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
27b10 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
27b20 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20  qlite3_vtab..   
27b30 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20   {..        /*  
27b40 30 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50  0 */ public IntP
27b50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tr pModule;..   
27b60 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75       /*  8 */ pu
27b70 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f  blic int nRef; /
27b80 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44  * NO LONGER USED
27b90 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
27ba0 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74  16 */ public Int
27bb0 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20  Ptr zErrMsg;..  
27bc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
27bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
27c20 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
27c30 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
27c40 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
27c50 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
27c60 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20  _vtab_cursor..  
27c70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20    {..        /* 
27c80 30 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50  0 */ public IntP
27c90 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d  tr pVTab;..    }
27ca0 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
27ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cf0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
27d00 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
27d10 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
27d20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27d30 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
27d40 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  dex_constraint..
27d50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
27d60 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
27d70 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d  dex_constraint(.
27d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
27d90 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
27da0 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
27db0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
27dc0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
27dd0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
27de0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
27df0 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c  onstraint != nul
27e00 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27e10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27e20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e     iColumn = con
27e30 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b  straint.iColumn;
27e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27e50 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e    op = constrain
27e60 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  t.op;..         
27e70 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20         usable = 
27e80 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c  constraint.usabl
27e90 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
27ea0 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20      iTermOffset 
27eb0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65  = constraint.iTe
27ec0 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20  rmOffset;..     
27ed0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
27ee0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
27ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
27f40 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63    /* 0 */ public
27f50 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20   int iColumn;.. 
27f60 20 20 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70         /* 4 */ p
27f70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
27f80 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70  xConstraintOp op
27f90 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 20  ;..        /* 5 
27fa0 2a 2f 20 70 75 62 6c 69 63 20 62 79 74 65 20 75  */ public byte u
27fb0 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
27fc0 2f 2a 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69  /* 8 */ public i
27fd0 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt iTermOffset;.
27fe0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
27ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28040 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
28050 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
28060 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
28070 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
28080 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
28090 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  y..    {..      
280a0 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
280b0 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d  _index_orderby(.
280c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
280d0 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20  iteIndexOrderBy 
280e0 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  orderBy..       
280f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28100 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
28110 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28120 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79       if (orderBy
28130 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
28140 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28150 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d            iColum
28160 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c  n = orderBy.iCol
28170 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
28180 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64        desc = ord
28190 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20  erBy.desc;..    
281a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
281b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28200 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
28210 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69     /* 0 */ publi
28220 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f  c int iColumn; /
28230 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20  * Column number 
28240 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  */..        /* 4
28250 20 2a 2f 20 70 75 62 6c 69 63 20 62 79 74 65 20   */ public byte 
28260 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20  desc;   /* True 
28270 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
28280 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20   for ASC. */..  
28290 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
282f0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
28300 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
28310 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
28320 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
28330 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
28340 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a  t_usage..    {..
28350 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
28360 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
28370 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a  straint_usage(..
28380 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
28390 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
283a0 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e  tUsage constrain
283b0 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20  tUsage..        
283c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
283d0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
283e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
283f0 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
28400 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29  ntUsage != null)
28410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28430 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e   argvIndex = con
28440 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67  straintUsage.arg
28450 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  vIndex;..       
28460 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20           omit = 
28470 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
28480 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  omit;..         
28490 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
284a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
284b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
28500 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64  blic int argvInd
28510 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f  ex; /* if >0, co
28520 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
28530 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
28540 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ter */..        
28550 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74  public byte omit
28560 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20  ;     /* Do not 
28570 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20  code a test for 
28580 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
28590 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
285a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
285b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
285f0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
28600 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
28610 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
28620 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
28630 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
28640 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  o..    {..      
28650 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a    /* Inputs */..
28660 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f          /*  0 */
28670 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e   public int nCon
28680 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62  straint; /* Numb
28690 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
286a0 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d   aConstraint */.
286b0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38 20 2a  .        /*  8 *
286c0 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
286d0 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20  aConstraint;..  
286e0 20 20 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70        /* 16 */ p
286f0 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72  ublic int nOrder
28700 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72  By;    /* Number
28710 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
28720 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20  OrderBy */..    
28730 20 20 20 20 2f 2a 20 32 34 20 2a 2f 20 70 75 62      /* 24 */ pub
28740 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65  lic IntPtr aOrde
28750 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  rBy;..        /*
28760 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20   Outputs */..   
28770 20 20 20 20 20 2f 2a 20 33 32 20 2a 2f 20 70 75       /* 32 */ pu
28780 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
28790 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
287a0 20 20 20 20 20 20 20 2f 2a 20 34 30 20 2a 2f 20         /* 40 */ 
287b0 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75  public int idxNu
287c0 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  m;           /* 
287d0 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69  Number used to i
287e0 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65  dentify the inde
287f0 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  x */..        /*
28800 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20 73 74   48 */ public st
28810 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20  ring idxStr;    
28820 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70      /* String, p
28830 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64  ossibly obtained
28840 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
28850 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lloc */..       
28860 20 2f 2a 20 35 36 20 2a 2f 20 70 75 62 6c 69 63   /* 56 */ public
28870 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49   int needToFreeI
28880 64 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69  dxStr; /* Free i
28890 64 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69  dxStr using sqli
288a0 74 65 33 5f 66 72 65 65 28 29 20 69 66 20 74 72  te3_free() if tr
288b0 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ue */..        /
288c0 2a 20 36 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 60 */ public i
288d0 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  nt orderByConsum
288e0 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20  ed;  /* True if 
288f0 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64  output is alread
28900 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20  y ordered */..  
28910 20 20 20 20 20 20 2f 2a 20 36 34 20 2a 2f 20 70        /* 64 */ p
28920 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74  ublic double est
28930 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45  imatedCost; /* E
28940 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66  stimated cost of
28950 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65   using this inde
28960 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  x */..        /*
28970 20 37 32 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f   72 */ public lo
28980 6e 67 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73  ng estimatedRows
28990 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  ;   /* Estimated
289a0 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
289b0 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20  returned */..   
289c0 20 20 20 20 20 2f 2a 20 38 30 20 2a 2f 20 70 75       /* 80 */ pu
289d0 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
289e0 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20  Flags idxFlags; 
289f0 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54  /* Mask of SQLIT
28a00 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66  E_INDEX_SCAN_* f
28a10 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lags */..       
28a20 20 2f 2a 20 38 38 20 2a 2f 20 70 75 62 6c 69 63   /* 88 */ public
28a30 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20   long colUsed;  
28a40 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a         /* Input:
28a50 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73   Mask of columns
28a60 20 75 73 65 64 20 62 79 20 73 74 61 74 65 6d 65   used by stateme
28a70 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65  nt */..    }..#e
28a80 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
28a90 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  gion..  }..  #en
28aa0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
28ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
28b00 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d  #region .NET Com
28b10 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 28  pact Framework (
28b20 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c 48 61  only) CriticalHa
28b30 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66 20  ndle Class..#if 
28b40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28b50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74  FRAMEWORK..  int
28b60 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63  ernal abstract c
28b70 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e  lass CriticalHan
28b80 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  dle : IDisposabl
28b90 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76  e..  {..    priv
28ba0 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73  ate bool _isClos
28bb0 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ed;..    protect
28bc0 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65  ed IntPtr handle
28bd0 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
28be0 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ed CriticalHandl
28bf0 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64  e(IntPtr invalid
28c00 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20  HandleValue)..  
28c10 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
28c20 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  e = invalidHandl
28c30 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f  eValue;..      _
28c40 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65  isClosed = false
28c50 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
28c60 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28  ~CriticalHandle(
28c70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
28c80 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
28c90 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
28ca0 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e  ivate void Clean
28cb0 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  up()..    {..   
28cc0 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64     if (!IsClosed
28cd0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
28ce0 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73      this._isClos
28cf0 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
28d00 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c      if (!IsInval
28d10 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  id)..        {..
28d20 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61 73            Releas
28d30 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20  eHandle();..    
28d40 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
28d50 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
28d60 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
28d70 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
28d80 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43     public void C
28d90 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  lose()..    {.. 
28da0 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
28db0 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
28dc0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
28dd0 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  spose()..    {..
28de0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
28df0 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
28e00 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
28e10 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
28e20 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
28e30 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
28e40 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20  Cleanup();..    
28e50 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
28e60 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  ed abstract bool
28e70 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
28e80 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
28e90 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ed void SetHandl
28ea0 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d  e(IntPtr value).
28eb0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
28ec0 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  ndle = value;.. 
28ed0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
28ee0 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ic void SetHandl
28ef0 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20  eAsInvalid()..  
28f00 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c    {..      _isCl
28f10 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
28f20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
28f30 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
28f40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
28f50 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65  lic bool IsClose
28f60 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
28f70 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73  get { return _is
28f80 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d  Closed; }..    }
28f90 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  ....    public a
28fa0 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49  bstract bool IsI
28fb0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20  nvalid..    {.. 
28fc0 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d       get;..    }
28fd0 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  ....  }..#endif.
28fe0 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
28ff0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
29000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29040 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
29050 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
29060 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
29070 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
29080 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
29090 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
290a0 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
290b0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
290c0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
290d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
290e0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
290f0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
29100 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
29110 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
29120 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
29130 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29140 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29150 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
29160 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
29170 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
29180 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
29190 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
291a0 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
291b0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
291c0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
291d0 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
291e0 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
291f0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
29200 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
29210 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
29220 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
29230 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
29240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29280 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
29290 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
292a0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
292b0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
292c0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
292d0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
292e0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
292f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29340 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
29350 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
29360 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
293b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
293c0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
293d0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
293e0 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
293f0 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
29400 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29410 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
29420 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
29430 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
29440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29450 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
29460 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
29470 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29490 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
294a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
294b0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
294c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
294d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
294e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
294f0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
29500 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29510 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29550 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29560 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
29570 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
29580 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
29590 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
295a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
295b0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
295c0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
295d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
295e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
295f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
29600 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
29610 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
29630 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
29640 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
29650 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
29660 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
29670 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29680 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
29690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
296e0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
296f0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
29700 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
29710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
29720 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
29730 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
29740 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
29750 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29760 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
29770 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
29780 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
29790 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
297a0 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
297b0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
297c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
297d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29810 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
29820 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
29830 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
29840 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
29850 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
29860 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29870 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
29880 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
29890 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
298a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
298b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6f            if (!o
298c0 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e  wnHandle) return
298d0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
298e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
298f0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
29900 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
29910 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
29920 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
29930 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
29940 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
29950 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
29960 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
29970 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
29980 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
29990 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  );....#if SQLITE
299a0 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
299b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
299c0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
299d0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
299e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299f0 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  closeConnection(
29a00 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  this, localHandl
29a10 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
29a20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29a30 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
29a40 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
29a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a60 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
29a70 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
29a80 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
29a90 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
29aa0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
29ab0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
29ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ad0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
29ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29af0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
29b00 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
29b10 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
29b20 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
29b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b40 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
29b50 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b70 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
29b80 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f  ection: {0}", lo
29b90 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
29ba0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
29bb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
29bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
29bd0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
29be0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29bf0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
29c00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
29c10 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
29c20 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
29c30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c50 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
29c60 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
29c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29c90 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
29ca0 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
29cb0 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e  ection(this, han
29cc0 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
29cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
29ce0 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
29cf0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
29d00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29d20 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
29d30 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
29d40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
29d50 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
29d60 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
29d70 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
29d80 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
29d90 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
29da0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
29db0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
29dc0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
29dd0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
29de0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
29df0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
29e00 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
29e10 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
29e20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
29e30 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
29e40 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
29e50 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
29e60 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
29e70 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
29e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
29e90 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
29ea0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29eb0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
29ec0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
29ed0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
29ee0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
29ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f00 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
29f10 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
29f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f30 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65       "CloseConne
29f40 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65  ction: {0}, exce
29f50 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
29f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f70 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
29f80 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
29f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29fa0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
29fb0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
29fc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
29fe0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
29ff0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2a000 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
2a010 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2a020 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a030 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2a040 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2a050 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2a060 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2a070 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a080 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
2a090 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
2a0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a0b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2a0c0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
2a0d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2a0e0 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a100 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
2a110 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2a120 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a170 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
2a180 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
2a190 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
2a1a0 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
2a1b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
2a1c0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
2a1d0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
2a1e0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
2a1f0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  tionCount);..   
2a200 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2a210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a260 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2a270 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64  lic bool OwnHand
2a280 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
2a290 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
2a2a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2a2b0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2a2c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2a2e0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2a2f0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2a300 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2a320 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  turn ownHandle;.
2a330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a340 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2a350 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2a360 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a3b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2a3c0 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
2a3d0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
2a3e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a3f0 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
2a400 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2a410 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2a420 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2a430 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2a440 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2a460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a470 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
2a480 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
2a490 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2a4a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a4b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a4c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a510 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
2a520 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
2a530 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
2a540 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
2a550 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2a560 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a570 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2a580 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2a590 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2a5a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a5b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a5c0 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
2a5d0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
2a5e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2a5f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
2a600 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2a610 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a660 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2a670 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
2a680 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
2a690 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
2a6a0 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
2a6b0 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
2a6c0 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e   SQLite statemen
2a6d0 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ts...    interna
2a6e0 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
2a6f0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2a700 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
2a710 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
2a720 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2a730 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a740 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
2a750 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
2a760 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
2a770 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
2a780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
2a7e0 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
2a7f0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
2a800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2a860 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
2a870 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
2a880 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61 74  ntPtr(SQLiteStat
2a890 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74  ementHandle stmt
2a8a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2a8b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
2a8c0 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  mt != null)..   
2a8d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2a8e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a8f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2a900 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2a910 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d  (stmt.syncRoot).
2a920 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2a930 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a950 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64  return stmt.hand
2a960 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
2a970 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a980 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2a990 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
2a9a0 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
2a9b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2aa10 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53  internal SQLiteS
2aa20 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53  tatementHandle(S
2aa30 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2aa40 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
2aa50 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  r stmt)..       
2aa60 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
2aa70 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2aa80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2aa90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2aaa0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2aab0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2aac0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2aad0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2aae0 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
2aaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2ab00 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a  tHandle(stmt);..
2ab10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2ab20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ab30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ab80 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2ab90 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2aba0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
2abb0 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
2abc0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2abd0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
2abe0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2abf0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
2ac00 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2ac10 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
2ac20 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2ac30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ac40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
2ac90 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
2aca0 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
2acb0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
2acc0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2acd0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2ace0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2acf0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2ad00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2ad10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2ad20 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
2ad30 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
2ad40 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
2ad50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2ad60 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
2ad70 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ero);....       
2ad80 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2ad90 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2ada0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2adc0 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
2add0 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
2ade0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
2adf0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2ae00 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2ae10 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2ae20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2ae30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2ae60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2ae70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2aea0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2aeb0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2aec0 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
2aed0 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20  alizeStatement: 
2aee0 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
2aef0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
2af00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2af10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2af20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2af30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2af40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2af50 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
2af60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2af70 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2af80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2af90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2afa0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
2afb0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
2afc0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2afd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aff0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
2b000 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
2b010 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
2b020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b030 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2b040 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
2b050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b060 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2b070 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2b080 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
2b090 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2b0a0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2b0b0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2b0c0 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
2b0d0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
2b0e0 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
2b0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b100 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
2b110 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2b120 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
2b130 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2b140 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2b150 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
2b160 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
2b170 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2b180 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
2b190 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
2b1a0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2b1b0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2b1c0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
2b1d0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2b1e0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2b1f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b210 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
2b220 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
2b230 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
2b240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b250 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
2b260 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
2b270 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
2b280 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
2b290 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
2b2a0 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2b2b0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b2d0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2b2e0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2b2f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b300 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2b310 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2b320 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b330 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2b340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2b350 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2b360 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2b370 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2b380 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b390 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2b3a0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2b3b0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3e0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2b3f0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2b400 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b410 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2b420 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2b430 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2b440 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2b450 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2b460 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2b470 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b480 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2b4d0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2b4e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2b4f0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2b500 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2b510 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b520 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2b530 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2b540 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
2b550 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
2b560 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2b570 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b5c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2b5d0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
2b5e0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
2b5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
2b600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2b610 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2b620 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b640 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2b650 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2b660 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2b670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b680 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
2b690 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2b6a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b6b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b6c0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2b6d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b720 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
2b730 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2b740 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
2b750 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
2b760 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2b770 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2b780 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2b790 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2b7a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2b7b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b7c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
2b7d0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
2b7e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2b7f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
2b800 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
2b810 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2b820 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b870 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2b880 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43  teBackupHandle C
2b890 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
2b8a0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
2b8b0 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
2b8c0 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
2b8d0 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d  backup objects..
2b8e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
2b8f0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
2b900 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20  eBackupHandle : 
2b910 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
2b920 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2b930 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b940 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
2b950 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
2b960 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
2b970 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
2b980 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2b990 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b9e0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2b9f0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2ba00 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
2ba10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ba20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ba60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2ba70 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
2ba80 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
2ba90 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
2baa0 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  e backup)..     
2bab0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2bac0 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20    if (backup != 
2bad0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2bae0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2baf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bb00 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2bb10 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75       lock (backu
2bb20 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  p.syncRoot)..#en
2bb30 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2bb40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2bb50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2bb60 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65  rn backup.handle
2bb70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2bb80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2bb90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2bba0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2bbb0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2bbc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2bc20 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63  ternal SQLiteBac
2bc30 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  kupHandle(SQLite
2bc40 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2bc50 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63   cnn, IntPtr bac
2bc60 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20  kup)..          
2bc70 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2bc80 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2bc90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2bca0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2bcb0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2bcc0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2bcd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bce0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
2bcf0 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
2bd00 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2bd10 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20  ndle(backup);.. 
2bd20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2bd30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2bd40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2bd90 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2bda0 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
2bdb0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2bdc0 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
2bdd0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
2bde0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2bdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2be00 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
2be10 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2be20 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  a.backupCount);.
2be30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2be40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2bea0 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2beb0 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2bec0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2bed0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bee0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2bef0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
2bf00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bf10 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2bf20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
2bf30 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
2bf40 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
2bf50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bf60 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
2bf70 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2bf80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf90 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
2bfa0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2bfb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2bfc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
2bfd0 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
2bfe0 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
2bff0 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
2c000 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2c010 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2c020 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2c040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c050 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2c060 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2c070 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2c080 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c090 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2c0a0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2c0b0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0d0 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
2c0e0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
2c0f0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
2c100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c110 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c120 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
2c130 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2c150 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
2c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c170 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2c180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c190 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c1a0 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
2c1b0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2c1c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2c1d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1f0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
2c200 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
2c210 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
2c220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c230 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
2c240 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2c260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c270 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
2c280 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2c290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2c2a0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2c2b0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2c2c0 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
2c2d0 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
2c2e0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
2c2f0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2c300 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2c310 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
2c320 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2c330 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2c340 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2c350 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
2c360 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
2c370 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2c380 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
2c390 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2c3a0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
2c3b0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2c3c0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2c3e0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2c3f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c400 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2c410 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2c420 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2c430 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2c450 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2c460 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2c470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c480 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75      "FinishBacku
2c490 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  p: {0}, exceptio
2c4a0 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
2c4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4c0 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
2c4d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2c4e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2c500 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2c510 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c520 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2c530 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2c540 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
2c550 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
2c560 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2c570 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c580 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2c590 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2c5a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2c5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2c5c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c5d0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
2c5e0 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
2c5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2c610 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2c620 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2c630 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
2c640 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2c650 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
2c660 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c670 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2c6c0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2c6d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2c6e0 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
2c6f0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2c700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2c710 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
2c720 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2c730 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e  gData.backupCoun
2c740 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
2c750 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
2c760 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c7b0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2c7c0 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
2c7d0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
2c7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2c800 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2c810 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2c830 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2c840 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2c850 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2c870 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
2c880 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2c890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2c8b0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2c8c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c910 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2c920 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2c930 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
2c940 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
2c950 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2c960 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2c970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2c980 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2c990 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2c9a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c9b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
2c9c0 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
2c9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c9e0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2c9f0 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
2ca00 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ca60 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
2ca70 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73  eBlobHandle Clas
2ca80 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
2ca90 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
2caa0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
2cab0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 6c 6f  naged SQLite blo
2cac0 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20  b objects...    
2cad0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
2cae0 63 6c 61 73 73 20 53 51 4c 69 74 65 42 6c 6f 62  class SQLiteBlob
2caf0 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
2cb00 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
2cb10 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2cb20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2cb30 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2cb40 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
2cb50 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
2cb60 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
2cb70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2cbd0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
2cbe0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2cbf0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2cc50 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
2cc60 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
2cc70 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 6c   IntPtr(SQLiteBl
2cc80 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a  obHandle blob)..
2cc90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cca0 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 62 20         if (blob 
2ccb0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2ccc0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2ccd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2cce0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2ccf0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c          lock (bl
2cd00 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  ob.syncRoot)..#e
2cd10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2cd20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cd30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2cd40 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b  urn blob.handle;
2cd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2cd70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2cd80 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
2cd90 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
2cda0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2cdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdf0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
2ce00 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62  ernal SQLiteBlob
2ce10 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
2ce20 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2ce30 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d  n, IntPtr blob).
2ce40 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
2ce50 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
2ce60 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2ce70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2ce80 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2ce90 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2cea0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2ceb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cec0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
2ced0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
2cee0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
2cef0 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  blob);..        
2cf00 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2cf10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2cf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2cf70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 6c 6f  rivate SQLiteBlo
2cf80 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  bHandle()..     
2cf90 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
2cfa0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2cfb0 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
2cfc0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2cfd0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2cfe0 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
2cff0 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
2d000 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
2d010 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d020 20 20 20 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 2f 0d 0a 0d 0a 20 20  //////////....  
2d070 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
2d080 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
2d090 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
2d0a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d0b0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2d0c0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
2d0d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2d0e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2d0f0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2d100 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
2d110 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
2d120 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
2d130 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
2d140 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
2d150 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
2d160 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
2d170 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
2d180 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2d190 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2d1a0 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
2d1b0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
2d1c0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
2d1d0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2d1e0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2d1f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2d200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d210 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d220 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2d230 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2d240 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2d250 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2d260 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2d270 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2d280 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2a0 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30    "CloseBlob: {0
2d2b0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
2d2c0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2d2f0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2d300 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d310 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2d320 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
2d330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2d340 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d360 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d370 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
2d380 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2d390 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2d3a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3c0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
2d3d0 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64  seBlob(cnn, hand
2d3e0 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
2d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2d400 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
2d410 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
2d420 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2d430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2d440 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
2d450 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2d460 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2d470 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
2d480 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
2d490 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  lobCount);..#end
2d4a0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
2d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d4c0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2d4d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d4e0 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
2d4f0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2d500 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2d510 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
2d520 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
2d530 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2d540 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2d550 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
2d560 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d570 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
2d580 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2d590 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2d5a0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5d0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
2d5e0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
2d5f0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
2d600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d610 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
2d620 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2d630 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
2d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
2d650 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65  loseBlob: {0}, e
2d660 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
2d670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d680 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
2d690 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
2d6a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d6b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d6c0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
2d700 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2d710 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
2d720 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2d730 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2d740 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2d750 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2d760 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2d770 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2d780 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d790 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2d7a0 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2d7b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d7c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2d7d0 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
2d7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2d7f0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
2d800 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
2d810 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2d820 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2d830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d880 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
2d890 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
2d8a0 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
2d8b0 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
2d8c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d8d0 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
2d8e0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2d8f0 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f  ef DebugData.blo
2d900 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  bCount);..      
2d910 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
2d920 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d970 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2d980 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
2d990 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
2d9a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d9b0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
2d9c0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2d9d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2d9e0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2d9f0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2da00 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2da10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da30 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
2da40 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2da50 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2da60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2da70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2da80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2da90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2daa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dad0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
2dae0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2daf0 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
2db00 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
2db10 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2db20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2db30 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2db40 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2db50 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2db60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2db70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2db80 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
2db90 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
2dba0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2dbb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
2dbc0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d     #endregion..}
2dbd0 0d 0a                                            ..