System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 56d5a821bf347ae1213cad87bc2ce2544bc315cc:


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 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e  (TRACE_DETECTION
01a0: 20 7c 7c 20 54 52 41 43 45 5f 53 48 41 52 45 44   || TRACE_SHARED
01b0: 20 7c 7c 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   || TRACE_PRELOA
01c0: 44 20 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c  D || TRACE_HANDL
01d0: 45 29 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  E)..  using Syst
01e0: 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d  em.Diagnostics;.
01f0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0200: 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  ng System.Collec
0210: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a  tions.Generic;..
0220: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49    using System.I
0230: 4f 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  O;..  using Syst
0240: 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a  em.Reflection;..
0250: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0270: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
0280: 2e 53 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64  .Security;..#end
0290: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
02a0: 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74  stem.Runtime.Int
02b0: 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d  eropServices;...
02c0: 0a 23 69 66 20 28 4e 45 54 5f 34 30 20 7c 7c 20  .#if (NET_40 || 
02d0: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
02e0: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
02f0: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
0300: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 29 20 26 26  1 || NET_462) &&
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 23 69 66 20 21  .#endif....#if !
0360: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
0370: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69  FRAMEWORK..  usi
0380: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0390: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
03a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
03b0: 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55  FRAMEWORK || COU
03c0: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69  NT_HANDLE..  usi
03d0: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
03e0: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
03f0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58    using System.X
0400: 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ml;....  #region
0410: 20 44 65 62 75 67 20 44 61 74 61 20 53 74 61 74   Debug Data Stat
0420: 69 63 20 43 6c 61 73 73 0d 0a 23 69 66 20 43 4f  ic Class..#if CO
0430: 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c 20 44 45  UNT_HANDLE || DE
0440: 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  BUG..  /// <summ
0450: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
0460: 20 63 6c 61 73 73 20 65 6e 63 61 70 73 75 6c 61   class encapsula
0470: 74 65 73 20 73 6f 6d 65 20 74 72 61 63 6b 69 6e  tes some trackin
0480: 67 20 64 61 74 61 20 74 68 61 74 20 69 73 20 75  g data that is u
0490: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
04a0: 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 65 73  g..  /// and tes
04b0: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 0d 0a  ting purposes...
04c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04d0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
04e0: 74 69 63 20 63 6c 61 73 73 20 44 65 62 75 67 44  tic class DebugD
04f0: 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ata..  {..      
0500: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
0510: 44 61 74 61 0d 0a 23 69 66 20 44 45 42 55 47 0d  Data..#if DEBUG.
0520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0530: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0540: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
0550: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 73 65 76  d to protect sev
0560: 65 72 61 6c 20 73 74 61 74 69 63 20 66 69 65 6c  eral static fiel
0570: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
0580: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0590: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
05a0: 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
05b0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d  staticSyncRoot =
05c0: 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
05d0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0630: 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69 74 69     #region Criti
0640: 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74  cal Handle Count
0650: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0660: 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  nly)..#if COUNT_
0670: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f  HANDLE..      //
0680: 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  ..      // NOTE:
0690: 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 72 65   These counts re
06a0: 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f 74 61  present the tota
06b0: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73  l number of outs
06c0: 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  tanding..      /
06d0: 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73  /       (non-dis
06e0: 70 6f 73 65 64 29 20 43 72 69 74 69 63 61 6c 48  posed) CriticalH
06f0: 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20 6f 62  andle derived ob
0700: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a  ject instances..
0710: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
0720: 72 65 61 74 65 64 20 62 79 20 74 68 69 73 20 6c  reated by this l
0730: 69 62 72 61 72 79 20 61 6e 64 20 61 72 65 20 70  ibrary and are p
0740: 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75 73 65  rimarily for use
0750: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20   by..      //   
0760: 20 20 20 20 74 68 65 20 74 65 73 74 20 73 75 69      the test sui
0770: 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75 6e 74  te.  These count
0780: 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e 74 65  s are incremente
0790: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
07a0: 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63 69 61  //       associa
07b0: 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f 72 73  ted constructors
07c0: 20 61 6e 64 20 61 72 65 20 64 65 63 72 65 6d 65   and are decreme
07d0: 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20  nted upon the.. 
07e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 75       //       su
07f0: 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74  ccessful complet
0800: 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73 6f 63  ion of the assoc
0810: 69 61 74 65 64 20 52 65 6c 65 61 73 65 48 61 6e  iated ReleaseHan
0820: 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  dle..      //   
0830: 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20      methods...  
0840: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e      //..      in
0850: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e  ternal static in
0860: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  t connectionCoun
0870: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
0880: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 73 74  al static int st
0890: 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20  atementCount;.. 
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 61 63 6b 75 70 43  atic int backupC
08c0: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
08d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
08e0: 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e   blobCount;..#en
08f0: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
0900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0960: 20 20 23 72 65 67 69 6f 6e 20 53 65 74 74 69 6e    #region Settin
0970: 67 73 20 52 65 61 64 20 43 6f 75 6e 74 73 20 28  gs Read Counts (
0980: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0990: 29 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  )..#if DEBUG..  
09a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
09b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
09c0: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
09d0: 72 65 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  res the read cou
09e0: 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74  nts for the runt
09f0: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
0a00: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
0a10: 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69 6e 66  tings.  This inf
0a20: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0a30: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0a40: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0a50: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0a60: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0a70: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0a80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0a90: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0aa0: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0ab0: 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74 74 69  ring, int> setti
0ac0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 0d  ngReadCounts;...
0ad0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
0b30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0b40: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0b50: 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 72 65  ry stores the re
0b60: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68  ad counts for th
0b70: 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67  e runtime config
0b80: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
0b90: 2f 2f 20 73 65 74 74 69 6e 67 73 20 76 69 61 20  // settings via 
0ba0: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
0bb0: 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20 54 68 69  ation file.  Thi
0bc0: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0bd0: 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   only..      ///
0be0: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0bf0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 20 22  ompiled in the "
0c00: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0c10: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0c20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0c30: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0c40: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0c50: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0c60: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
0c70: 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ounts;..#endif..
0c80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0c90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ce0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0cf0: 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f 75 6e 74  gion Other Count
0d00: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0d10: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0d20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0d40: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
0d50: 73 74 6f 72 65 73 20 6d 69 73 63 65 6c 6c 61 6e  stores miscellan
0d60: 65 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64  eous counts used
0d70: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a   for debugging..
0d80: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
0d90: 65 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  es.  This inform
0da0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65  ation is only re
0db0: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0dc0: 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  iled in the..   
0dd0: 20 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62     /// "Debug" b
0de0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0df0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0e00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0e10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0e20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0e30: 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72 43 6f 75  g, int> otherCou
0e40: 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nts;..#endif..  
0e50: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0e60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0e70: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ec0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0ed0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
0ee0: 6f 64 73 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  ods..#if DEBUG..
0ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
0f10: 72 65 61 74 65 73 20 64 69 63 74 69 6f 6e 61 72  reates dictionar
0f20: 69 65 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72  ies used to stor
0f30: 65 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  e the read count
0f40: 73 20 66 6f 72 20 65 61 63 68 20 6f 66 0d 0a 20  s for each of.. 
0f50: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 75 6e       /// the run
0f60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
0f70: 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20 20 54 68  on settings.  Th
0f80: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
0f90: 75 73 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20  used for..      
0fa0: 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67 20 61 6e  /// debugging an
0fb0: 64 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  d testing purpos
0fc0: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
0fd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0fe0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
0ff0: 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  tic void Initial
1000: 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ize()..      {..
1010: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1020: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1030: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1040: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1060: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
1070: 65 20 64 69 63 74 69 6f 6e 61 72 69 65 73 20 6f  e dictionaries o
1080: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
1090: 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  t will..        
10a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
10b0: 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75 6d 62 65  ontain the numbe
10c0: 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20  r of times each 
10d0: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 0d 0a 20  setting value.. 
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10f0: 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20 72        has been r
1100: 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ead...          
1110: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1120: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1130: 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e  gReadCounts == n
1140: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1150: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
1160: 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  eadCounts = new 
1170: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1180: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20  g, int>();....  
1190: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11a0: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
11b0: 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ounts == null)..
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61    settingFileRea
11e0: 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69  dCounts = new Di
11f0: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1200: 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20   int>();....    
1210: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c  herCounts == nul
1230: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1240: 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75 6e 74        otherCount
1250: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1260: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1270: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
1280: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1290: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
1300: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61  crements the rea
1310: 64 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20  d count for the 
1320: 73 70 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d  specified runtim
1330: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
1340: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
1350: 6e 67 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65  ng.  These numbe
1360: 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  rs are used for 
1370: 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65  debugging and te
1380: 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a  sting purposes..
1390: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d        /// only..
13a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
13d0: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
13e0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
13f0: 73 65 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65  setting being re
1400: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
1410: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1420: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1430: 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20  viaFile">..     
1440: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
1450: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
1460: 65 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20  etting is being 
1470: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d  read from the XM
1480: 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
1490: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
14a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
14b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ram>..      publ
14c0: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
14d0: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
14e0: 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20  eadCount(..     
14f0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
1500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  ,..          boo
1510: 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20  l viaFile..     
1520: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
1530: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1540: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1550: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1580: 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73  / NOTE: Update s
1590: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
15a0: 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  is setting value
15b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15c0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15d0: 20 20 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d     if (viaFile).
15e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
15f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1600: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1610: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d  ileReadCounts !=
1620: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1630: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1650: 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d     int count;...
1660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1670: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1680: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1690: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
16a0: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
16d0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b  gFileReadCounts[
16e0: 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20  name] = count + 
16f0: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
1700: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1720: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1730: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e  gFileReadCounts.
1740: 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20  Add(name, 1);.. 
1750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1760: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1770: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1780: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1790: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17b0: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
17c0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17f0: 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74         int count
1800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1810: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1820: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1830: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
1840: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1860: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1870: 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65  gReadCounts[name
1880: 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a  ] = count + 1;..
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
18d0: 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65  dCounts.Add(name
18e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
18f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1900: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1910: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1920: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
1980: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1990: 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74     /// Increment
19a0: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
19b0: 63 6f 75 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  counter...      
19c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19e0: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
19f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
1a00: 65 20 6f 66 20 74 68 65 20 63 6f 75 6e 74 65 72  e of the counter
1a10: 20 62 65 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74   being increment
1a20: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
1a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1a40: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1a50: 64 20 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  d IncrementOther
1a60: 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  Count(..        
1a70: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20    string name.. 
1a80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1a90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1aa0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1ab0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ad0: 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74 73   if (otherCounts
1ae0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1af0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1b10: 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20  t count;....    
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1b30: 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 2e 54 72   (otherCounts.Tr
1b40: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1b50: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e     otherCounts[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 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc0: 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 41 64 64   otherCounts.Add
1bd0: 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20  (name, 1);..    
1be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c00: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1c10: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
1c20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64  ..#endif..  #end
1c30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
1c90: 72 65 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65  region Helper Me
1ca0: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
1cb0: 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ss..  /// <summa
1cc0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
1cd0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f  static class pro
1ce0: 76 69 64 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f  vides some metho
1cf0: 64 73 20 74 68 61 74 20 61 72 65 20 73 68 61 72  ds that are shar
1d00: 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0d 0a  ed between the..
1d10: 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62    /// native lib
1d20: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
1d30: 61 6e 64 20 6f 74 68 65 72 20 63 6c 61 73 73 65  and other classe
1d40: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
1d50: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
1d60: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 48 65   static class He
1d70: 6c 70 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  lperMethods..  {
1d80: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
1d90: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
1da0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1db0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
1dc0: 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74  s lock is used t
1dd0: 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 73 74  o protect the st
1de0: 61 74 69 63 20 3c 73 65 65 20 63 72 65 66 3d 22  atic <see cref="
1df0: 69 73 4d 6f 6e 6f 22 20 2f 3e 20 66 69 65 6c 64  isMono" /> field
1e00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1e10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1e20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
1e30: 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74  adonly object st
1e40: 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e  aticSyncRoot = n
1e50: 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a  ew object();....
1e60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1ec0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1ed0: 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c  This type is onl
1ee0: 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72  y present when r
1ef0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
1f00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
1f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
1f20: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
1f30: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f  only string Mono
1f40: 52 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d  RuntimeType = "M
1f50: 6f 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d  ono.Runtime";...
1f60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
1f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1fc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1fd0: 20 4b 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20   Keeps track of 
1fe0: 77 68 65 74 68 65 72 20 77 65 20 61 72 65 20 72  whether we are r
1ff0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20  unning on Mono. 
2000: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
2010: 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f   it is..      //
2020: 2f 20 73 65 74 20 62 79 20 74 68 65 20 3c 73 65  / set by the <se
2030: 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20  e cref="IsMono" 
2040: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
2050: 20 66 69 72 73 74 20 63 61 6c 6c 2e 20 20 4c 61   first call.  La
2060: 74 65 72 2c 20 69 74 0d 0a 20 20 20 20 20 20 2f  ter, it..      /
2070: 2f 2f 20 69 73 20 72 65 74 75 72 6e 65 64 20 76  // is returned v
2080: 65 72 62 61 74 69 6d 20 62 79 20 74 68 65 20 3c  erbatim by the <
2090: 73 65 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f  see cref="IsMono
20a0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
20b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
20c0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
20d0: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 69  e static bool? i
20e0: 73 4d 6f 6e 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  sMono = null;.. 
20f0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2100: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2160: 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
2170: 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ods..      /// <
2180: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2190: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77  /// Determines w
21a0: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
21b0: 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72  is assembly is r
21c0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
21d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
21e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
21f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2200: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
2210: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  f this assembly 
2220: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  is running on Mo
2230: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
2240: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2250: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2260: 62 6f 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20  bool IsMono().. 
2270: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2280: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2290: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22a0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
22b0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
22c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22e0: 69 73 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d  isMono == null).
22f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2300: 20 20 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20         isMono = 
2310: 28 54 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f  (Type.GetType(Mo
2320: 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21  noRuntimeType) !
2330: 3d 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  = null);....    
2340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2350: 74 75 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e  turn (bool)isMon
2360: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
2370: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
2380: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
2390: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  h..          {..
23a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
23b0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
23c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
23e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lse;..      }.. 
23f0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2400: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2460: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74  ion Internal Met
2470: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
2480: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2490: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
24a0: 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  if the current p
24b0: 72 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e  rocess is runnin
24c0: 67 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  g on one of the 
24d0: 57 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f  Windows..      /
24e0: 2f 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72  // [sub-]platfor
24f0: 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ms...      /// <
2500: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2510: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2520: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2530: 72 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  ro when running 
2540: 6f 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65  on Windows; othe
2550: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
2560: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2570: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
2580: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  al static bool I
2590: 73 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20  sWindows()..    
25a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50    {..          P
25b0: 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f  latformID platfo
25c0: 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  rmId = Environme
25d0: 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61  nt.OSVersion.Pla
25e0: 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20  tform;....      
25f0: 20 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72      if ((platfor
2600: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
2610: 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20  D.Win32S) ||..  
2620: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
2630: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
2640: 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f  ormID.Win32Windo
2650: 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ws) ||..        
2660: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
2670: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
2680: 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20  Win32NT) ||..   
2690: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
26a0: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
26b0: 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20  rmID.WinCE))..  
26c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26e0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
26f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2700: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
2710: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2770: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2780: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
2790: 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75  s a wrapper arou
27a0: 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  nd the..      //
27b0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  / <see cref="Str
27c0: 69 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d  ing.Format(IForm
27d0: 61 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e  atProvider,Strin
27e0: 67 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20  g,Object[])" /> 
27f0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
2800: 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68  // On Mono, it h
2810: 61 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d  as to call the m
2820: 65 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77  ethod overload w
2830: 69 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20  ithout the..    
2840: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
2850: 22 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72  "IFormatProvider
2860: 22 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20  " /> parameter, 
2870: 64 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20  due to a bug in 
2880: 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  Mono...      ///
2890: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28b0: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
28c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
28d0: 73 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75  s used for cultu
28e0: 72 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d  re-specific form
28f0: 61 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  atting...      /
2900: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2910: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2920: 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20  me="format">..  
2930: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
2940: 61 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  at string...    
2950: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2960: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2970: 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20   name="args">.. 
2980: 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61       /// An arra
2990: 79 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f  y the objects to
29a0: 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20   format...      
29b0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29c0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
29d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
29e0: 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e   resulting strin
29f0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
2a00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2a10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2a20: 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72  string StringFor
2a30: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a40: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
2a50: 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20  provider,..     
2a60: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d       string form
2a70: 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70  at,..          p
2a80: 61 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61  arams object[] a
2a90: 72 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  rgs..          )
2aa0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
2ab0: 20 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28       if (IsMono(
2ac0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2ad0: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
2ae0: 46 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61  Format(format, a
2af0: 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rgs);..         
2b00: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2b10: 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
2b20: 6e 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64  ng.Format(provid
2b30: 65 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73  er, format, args
2b40: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
2b50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
2b60: 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e   }..  #endregion
2b70: 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
2b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
2bd0: 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79 20   Native Library 
2be0: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
2bf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c00: 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63   /// This static
2c10: 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20   class provides 
2c20: 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20 61  a thin wrapper a
2c30: 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76 65  round the native
2c40: 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20   library..  /// 
2c50: 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65 73  loading features
2c60: 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   of the underlyi
2c70: 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  ng platform...  
2c80: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2c90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2ca0: 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c 69  c class NativeLi
2cb0: 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b  braryHelper..  {
2cc0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2cd0: 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74 65  Private Delegate
2ce0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
2cf0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2d00: 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65 20  / This delegate 
2d10: 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70 20  is used to wrap 
2d20: 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c  the concept of l
2d30: 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65 0d  oading a native.
2d40: 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61  .      /// libra
2d50: 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20 66  ry, based on a f
2d60: 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65  ile name, and re
2d70: 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64  turning the load
2d80: 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  ed module..     
2d90: 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20   /// handle...  
2da0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2db0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2dc0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
2dd0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
2de0: 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f   The file name o
2df0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  f the native lib
2e00: 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20  rary to load... 
2e10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2e30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2e40: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
2e50: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
2e60: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
2e70: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
2e80: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
2e90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2ea0: 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67 61    private delega
2eb0: 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  te IntPtr LoadLi
2ec0: 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a  braryCallback(..
2ed0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2ee0: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
2ef0: 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72   );..      #endr
2f00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f60: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
2f70: 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  e Methods..     
2f80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f90: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
2fa0: 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73  ts to load the s
2fb0: 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
2fc0: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73 69  library file usi
2fd0: 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20 20  ng the Win32..  
2fe0: 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20      /// API...  
2ff0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3000: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
3010: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
3020: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
3030: 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f   The file name o
3040: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  f the native lib
3050: 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20  rary to load... 
3060: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3070: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3080: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
3090: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
30a0: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
30b0: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
30c0: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
30d0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
30e0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
30f0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3100: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
3110: 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20 20  aryWin32(..     
3120: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
3130: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
3140: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
3150: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
3160: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
3170: 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72  Win32.LoadLibrar
3180: 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20  y(fileName);..  
3190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
31a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3200: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
3210: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3220: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
3230: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
3240: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
3250: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
3260: 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a 20  ing the POSIX.. 
3270: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
3280: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3290: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
32a0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
32b0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
32c0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
32d0: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
32e0: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
32f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3300: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
3310: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
3320: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
3330: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
3340: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
3350: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
3360: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
3370: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3390: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
33a0: 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20 20  raryPosix(..    
33b0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
33c0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
33d0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
33e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
33f0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
3400: 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d 0a  sPosix.dlopen(..
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
3420: 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e 61  leName, UnsafeNa
3430: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
3440: 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b 0d  .RTLD_DEFAULT);.
3450: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
3460: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
3470: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
34d0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65  region Public Me
34e0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  thods..      ///
34f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3500: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
3510: 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69  o load the speci
3520: 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72  fied native libr
3530: 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ary file...     
3540: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3550: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3560: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
3570: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
3580: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
3590: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
35a0: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
35b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
35d0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
35e0: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
35f0: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
3600: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
3610: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
3620: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
3630: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
3640: 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
3650: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28  Ptr LoadLibrary(
3660: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
3670: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
3680: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
3690: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f 61  {..          Loa
36a0: 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b  dLibraryCallback
36b0: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64   callback = Load
36c0: 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d  LibraryWin32;...
36d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
36e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
36f0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
3700: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73  HelperMethods.Is
3710: 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20  Windows())..    
3720: 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61            callba
3730: 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79  ck = LoadLibrary
3740: 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Posix;..#endif..
3750: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
3760: 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65  rn callback(file
3770: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  Name);..      }.
3780: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
3790: 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
37a0: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
3800: 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49  gion Unmanaged I
3810: 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53  nterop Methods S
3820: 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f 53  tatic Class (POS
3830: 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  IX)..#if !PLATFO
3840: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3850: 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ORK..  /// <summ
3860: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
3870: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
3880: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
3890: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
38a0: 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f  POSIX APIs...  /
38b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
38c0: 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61   [SuppressUnmana
38d0: 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d  gedCodeSecurity]
38e0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
38f0: 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65  tic class Unsafe
3900: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73  NativeMethodsPos
3910: 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ix..  {..      /
3920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3970: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3980: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
3990: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
39a0: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
39b0: 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20  the native Unix 
39c0: 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f  dlopen..      //
39d0: 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65  / function.  See
39e0: 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d   the POSIX docum
39f0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c  entation for ful
3a00: 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61  l details on wha
3a10: 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t it..      /// 
3a20: 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  does...      ///
3a30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3a40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3a50: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
3a60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
3a70: 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75 74  me of the execut
3a80: 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  able library... 
3a90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3aa0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
3ab0: 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e  ram name="mode">
3ac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
3ad0: 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62 69   must be a combi
3ae0: 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e  nation of the in
3af0: 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c 61  dividual bit fla
3b00: 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20  gs RTLD_LAZY,.. 
3b10: 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f       /// RTLD_NO
3b20: 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20  W, RTLD_GLOBAL, 
3b30: 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43 41  and/or RTLD_LOCA
3b40: 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  L...      /// </
3b50: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
3b60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
3b70: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
3b80: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
3b90: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
3ba0: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
3bb0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
3bc0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3bd0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
3be0: 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 20  t("__Internal", 
3bf0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c  EntryPoint = "dl
3c00: 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20  open",..        
3c10: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
3c20: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
3c30: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
3c40: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
3c50: 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20  .Ansi,..        
3c60: 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67    BestFitMapping
3c70: 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f   = false, ThrowO
3c80: 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20  nUnmappableChar 
3c90: 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20  = true,..       
3ca0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
3cb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
3cc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3cd0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c  extern IntPtr dl
3ce0: 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65  open(string file
3cf0: 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b  Name, int mode);
3d00: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d50: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3d60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3d70: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
3d80: 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20   dlopen(), bind 
3d90: 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c  function calls l
3da0: 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  azily...      //
3db0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3dc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
3dd0: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59  st int RTLD_LAZY
3de0: 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20   = 0x1;....     
3df0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
3e40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3e50: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75  .      /// For u
3e60: 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29  se with dlopen()
3e70: 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20  , bind function 
3e80: 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c  calls immediatel
3e90: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
3ea0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3eb0: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69  internal const i
3ec0: 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78  nt RTLD_NOW = 0x
3ed0: 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  2;....      ////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f20: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3f30: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3f40: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
3f50: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b  th dlopen(), mak
3f60: 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c  e symbols global
3f70: 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ly available... 
3f80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3f90: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
3fa0: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
3fb0: 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30  LD_GLOBAL = 0x10
3fc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  0;....      ////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4010: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4020: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4030: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
4040: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70  th dlopen(), opp
4050: 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c  osite of RTLD_GL
4060: 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65  OBAL, and the de
4070: 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  fault...      //
4080: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4090: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
40a0: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41  st int RTLD_LOCA
40b0: 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20  L = 0x000;....  
40c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
40d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4110: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4120: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
4130: 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65  r use with dlope
4140: 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74  n(), the default
4150: 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20 63  s used by this c
4160: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lass...      ///
4170: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4180: 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f 6e     internal  con
4190: 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46 41  st int RTLD_DEFA
41a0: 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c  ULT = RTLD_NOW |
41b0: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20   RTLD_GLOBAL;.. 
41c0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65   }..#endif..  #e
41d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
41e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
4230: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
4240: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
4250: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
4260: 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c  (Win32)..  /// <
4270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
4280: 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61  This class decla
4290: 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  res P/Invoke met
42a0: 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74  hods to call nat
42b0: 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e 0d  ive Win32 APIs..
42c0: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
42d0: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
42e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
42f0: 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  K..  [SuppressUn
4300: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
4310: 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ity]..#endif..  
4320: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4330: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
4340: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a  veMethodsWin32..
4350: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f    {..      /////
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43a0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
43b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
43c0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
43d0: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
43e0: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
43f0: 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f 61  native Win32 Loa
4400: 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20 20  dLibrary..      
4410: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
4420: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
4430: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
4440: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
4450: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
4460: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
4470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4480: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4490: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
44a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
44b0: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
44c0: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
44d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
44e0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
44f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4500: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
4510: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
4520: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
4530: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
4540: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
4550: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66   </returns>..#if
4560: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4570: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4580: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b     [DllImport("k
4590: 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65  ernel32",..#else
45a0: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
45b0: 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23  rt("coredll",..#
45c0: 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43  endif.. CallingC
45d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
45e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
45f0: 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20  napi, CharSet = 
4600: 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23  CharSet.Auto,..#
4610: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4620: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4630: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
4640: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
4650: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
4660: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
4670: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4680: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
4690: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69   true)]..      i
46a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
46b0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
46c0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
46d0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
46e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
46f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
4730: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
4740: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
4750: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
4760: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
4770: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
4780: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
4790: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
47a0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
47b0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
47c0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
47d0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
47e0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
47f0: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
4800: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
4810: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
4820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4840: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
4850: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
4860: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
4870: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
4880: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
4890: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
48a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
48b0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
48c0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
48d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
48e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
48f0: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
4900: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4910: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65  c extern void Ge
4920: 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20  tSystemInfo(out 
4930: 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74  SYSTEM_INFO syst
4940: 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
4950: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
49a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
49b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
49c0: 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e   enumeration con
49d0: 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62  tains the possib
49e0: 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  le values for th
49f0: 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
4a00: 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
4a10: 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65  ure field of the
4a20: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
4a30: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ion structure...
4a40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4a50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
4a60: 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73  rnal enum Proces
4a70: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
4a80: 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50  : ushort /* COMP
4a90: 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20  AT: Win32. */.. 
4aa0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4ab0: 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20    Intel = 0,..  
4ac0: 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31          MIPS = 1
4ad0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70  ,..          Alp
4ae0: 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20  ha = 2,..       
4af0: 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d     PowerPC = 3,.
4b00: 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d  .          SHx =
4b10: 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   4,..          A
4b20: 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20  RM = 5,..       
4b30: 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20     IA64 = 6,..  
4b40: 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20          Alpha64 
4b50: 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 7,..          
4b60: 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20  MSIL = 8,..     
4b70: 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d       AMD64 = 9,.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f  .          IA32_
4b90: 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a  on_Win64 = 10,..
4ba0: 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77            Unknow
4bb0: 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20  n = 0xFFFF..    
4bc0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
4c20: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4c30: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
4c40: 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69  cture contains i
4c50: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
4c60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d   the current com
4c70: 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20  puter. This..   
4c80: 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20     /// includes 
4c90: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79  the processor ty
4ca0: 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d  pe, page size, m
4cb0: 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c  emory addresses,
4cc0: 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   etc...      ///
4cd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ce0: 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
4cf0: 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
4d00: 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20  ential)]..      
4d10: 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
4d20: 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20  SYSTEM_INFO..   
4d30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4d40: 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72  public Processor
4d50: 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72  Architecture wPr
4d60: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
4d70: 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ure;..          
4d80: 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52  public ushort wR
4d90: 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20  eserved; /* NOT 
4da0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
4db0: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
4dc0: 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f  wPageSize; /* NO
4dd0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
4de0: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
4df0: 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c  tr lpMinimumAppl
4e00: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
4e10: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
4e20: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4e30: 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75   IntPtr lpMaximu
4e40: 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72  mApplicationAddr
4e50: 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ess; /* NOT USED
4e60: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
4e70: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74  ublic uint dwAct
4e80: 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b  iveProcessorMask
4e90: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
4ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
4eb0: 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72  ic uint dwNumber
4ec0: 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a  OfProcessors; /*
4ed0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
4ee0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
4ef0: 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54  int dwProcessorT
4f00: 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ype; /* NOT USED
4f10: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
4f20: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c  ublic uint dwAll
4f30: 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69  ocationGranulari
4f40: 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ty; /* NOT USED 
4f50: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
4f60: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f  blic ushort wPro
4f70: 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20  cessorLevel; /* 
4f80: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
4f90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
4fa0: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52  hort wProcessorR
4fb0: 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20  evision; /* NOT 
4fc0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  USED */..      }
4fd0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20  ..#endif..  }.. 
4fe0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4ff0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5040: 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61  ..  #region Unma
5050: 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65  naged Interop Me
5060: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
5070: 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f  ss (SQLite)..  /
5080: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5090: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64  /// This class d
50a0: 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65  eclares P/Invoke
50b0: 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c   methods to call
50c0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 41   native SQLite A
50d0: 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  PIs...  /// </su
50e0: 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41  mmary>..#if !PLA
50f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5100: 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72  MEWORK..  [Suppr
5110: 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65  essUnmanagedCode
5120: 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69  Security]..#endi
5130: 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  f..  internal st
5140: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
5150: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a  eNativeMethods..
5160: 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69    {..      #regi
5170: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
5180: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
5190: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
51a0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
51b0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
51c0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
51d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
51e0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
51f0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
5200: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
5210: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
5220: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5230: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5240: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
5250: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
5260: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
5270: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
52c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
52d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
52e0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
52f0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
5300: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
5310: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
5320: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5330: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
5340: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
5350: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
5360: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
5370: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
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 2f 2f  ////////////////
53c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
53d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
53e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
53f0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
5400: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
5410: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
5420: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
5430: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
5440: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
5450: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5470: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
5480: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
5490: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
54a0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
54b0: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
54c0: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
54d0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
54e0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
54f0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
5500: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
5560: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5570: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
5580: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
5590: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
55a0: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
55b0: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
55c0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
55d0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
55e0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
55f0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
5600: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
5610: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
5620: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5630: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
5640: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
5650: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
5660: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
5670: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
5680: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
5690: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
56a0: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
56b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5710: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
5720: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
5730: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
5740: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
5750: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
5760: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
5770: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5780: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
5790: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
57a0: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
57b0: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
57c0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
57d0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
57e0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
57f0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
5800: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
5810: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5820: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5830: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
5840: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
5850: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
5860: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
5870: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
5880: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
5890: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
58f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5900: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
5910: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
5920: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
5930: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
5940: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
5950: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
5960: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
5970: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
5980: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
5990: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
59a0: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
59b0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
59c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
59d0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
59e0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
59f0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
5a00: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
5a10: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
5a20: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
5a30: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
5a40: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
5a50: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
5ab0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
5ac0: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
5ad0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5ae0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
5af0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
5b00: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
5b10: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
5b20: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
5b30: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
5b40: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
5b50: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
5b60: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
5b70: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
5b80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5b90: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5ba0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
5bb0: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
5bc0: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
5bd0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
5be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
5c30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5c40: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
5c50: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
5c60: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
5c70: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
5c80: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
5c90: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
5ca0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
5cb0: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
5cc0: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
5cd0: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
5ce0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
5cf0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
5d00: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
5d10: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
5d20: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
5d30: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
5d40: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
5d50: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
5d60: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
5d70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
5d80: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
5d90: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
5da0: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
5db0: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
5dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
5dd0: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
5de0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
5df0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
5e00: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
5e10: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
5e20: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
5e30: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
5e40: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
5e50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5e60: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5e70: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
5e80: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
5e90: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5ea0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
5eb0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5f10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5f20: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
5f30: 63 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61  cached return va
5f40: 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  lue from the..  
5f50: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
5f60: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
5f70: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
5f80: 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  od -OR- null if 
5f90: 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20  that method..   
5fa0: 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72     /// has never
5fb0: 20 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69   returned a vali
5fc0: 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  d value...      
5fd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5fe0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
5ff0: 61 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68  atic string cach
6000: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
6010: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ory;....      //
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6060: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6070: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6080: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
6090: 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a  s field is non-z
60a0: 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65  ero, it indicate
60b0: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s the..      ///
60c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
60d0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
60e0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
60f0: 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61  not able to loca
6100: 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  te a..      /// 
6110: 73 75 69 74 61 62 6c 65 20 61 73 73 65 6d 62 6c  suitable assembl
6120: 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  y directory.  Th
6130: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
6140: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
6150: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
6160: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
6170: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
6180: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
6190: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
61a0: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
61b0: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
61c0: 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a 20 20 20  rectory" />..   
61d0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
61e0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
61f0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
6200: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6210: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
6220: 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73 65 6d 62  ic bool noAssemb
6230: 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
6240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6290: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
62a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
62b0: 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68  This is the cach
62c0: 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ed return value 
62d0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
62e0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
62f0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
6300: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ame" /> method -
6310: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74  OR- null if that
6320: 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f   method..      /
6330: 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74  // has never ret
6340: 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61  urned a valid va
6350: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
6360: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6370: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
6380: 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 58 6d   string cachedXm
6390: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b  lConfigFileName;
63a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63f0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
6400: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6410: 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69  /// When this fi
6420: 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eld is non-zero,
6430: 20 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68   it indicates th
6440: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
6450: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
6460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
6470: 20 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20   method was not 
6480: 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61  able to locate a
6490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74  ..      /// suit
64a0: 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75  able XML configu
64b0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
64c0: 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
64d0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
64e0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
64f0: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
6500: 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68  od will check th
6510: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69  is..      /// fi
6520: 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61  eld and skips ca
6530: 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65  lls into the <se
6540: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
6550: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
6560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
6570: 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20 69  od whenever it i
6580: 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  s non-zero...   
6590: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
65a0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
65b0: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 58   static bool noX
65c0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
65d0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
65e0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6640: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6650: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
6660: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
6670: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
6680: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
6690: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
66a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
66b0: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
66c0: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
66d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
66e0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
66f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6750: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6760: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
6770: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
6780: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
6790: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
67a0: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
67b0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
67c0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
67d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
67e0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
67f0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
6800: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6810: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6820: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
6830: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  e()..      {..#i
6840: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
6850: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
6860: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
6870: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6880: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
6890: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
68a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
68b0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
68c0: 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f  If the "No_PreLo
68d0: 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f  adSQLite" enviro
68e0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
68f0: 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20  s set (to..     
6900: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
6910: 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c  ything), skip al
6920: 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f  l our special co
6930: 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65  de and simply re
6940: 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  turn...         
6950: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
6960: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
6970: 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  ue("No_PreLoadSQ
6980: 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  Lite", null) != 
6990: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
69a0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
69b0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
69c0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
69d0: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
69e0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
69f0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6a00: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6a10: 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 73  Create the lists
6a20: 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 74   of statistics t
6a30: 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  hat will contain
6a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6a50: 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75       various cou
6a60: 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62 75  nts used in debu
6a70: 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  gging, including
6a80: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
6a90: 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20  //       number 
6aa0: 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65  of times each se
6ab0: 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20  tting value has 
6ac0: 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20  been read...    
6ad0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6ae0: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
6af0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e  itialize();..#en
6b00: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
6b10: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6b20: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
6b30: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
6b40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6b50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6b60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f             // TO
6b70: 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  DO: Make sure th
6b80: 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74  is list is updat
6b90: 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72  ed if the suppor
6ba0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
6bb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
6bc0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
6bd0: 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20  re names and/or 
6be0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a  platform names..
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6c00: 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d         changes..
6c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
6c20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6c30: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
6c40: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
6c50: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c80: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6c90: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6ca0: 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f  Create the map o
6cb0: 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  f processor arch
6cc0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a  itecture names..
6cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ce0: 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c    //       to pl
6cf0: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69  atform names usi
6d00: 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73  ng a case-insens
6d10: 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20  itive string..  
6d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d30: 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65  //       compare
6d40: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
6d50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6d60: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
6d70: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
6d80: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20  ePlatforms =..  
6d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6da0: 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61      new Dictiona
6db0: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
6dc0: 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g>(..           
6dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
6de0: 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72  tringComparer.Or
6df0: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
6e00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6e10: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6e30: 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20  NOTE: Setup the 
6e40: 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d  list of platform
6e50: 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65   names associate
6e60: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
6e70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6e80: 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64     the supported
6e90: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
6ea0: 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20  tectures...     
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
6ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ed0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
6ee0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
6ef0: 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69  s.Add("x86", "Wi
6f00: 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  n32");..        
6f10: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
6f20: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
6f30: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d  latforms.Add("AM
6f40: 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20  D64", "x64");.. 
6f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6f70: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
6f80: 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61  Add("IA64", "Ita
6f90: 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  nium");..       
6fa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
6fb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
6fc0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
6fd0: 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a  RM", "WinCE");..
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
6ff0: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
7000: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
7010: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
7020: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7030: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
7040: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
7050: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RY..            
7060: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7070: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
7080: 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20  hat about other 
7090: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
70a0: 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ins?..          
70b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
70c0: 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74        if (_SQLit
70d0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
70e0: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
70f0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
7100: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7110: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
7120: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  aseDirectory = n
7130: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
7140: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
7150: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7160: 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ture = null;....
7170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7180: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
7190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71a0: 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65     SearchForDire
71b0: 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  ctory(..        
71c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
71d0: 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  f baseDirectory,
71e0: 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72   ref processorAr
71f0: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7220: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
7230: 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d   Attempt to pre-
7240: 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20  load the SQLite 
7250: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72  core library (or
7260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7270: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74      //       int
7280: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61  erop assembly) a
7290: 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68  nd store both th
72a0: 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20  e file name..   
72b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
72c0: 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69  /       and nati
72d0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
72e0: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65   for later usage
72f0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7300: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7310: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47             /* IG
7320: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
7330: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c              PreL
7340: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
7350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7360: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
7370: 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
7380: 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73a0: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
73b0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
73c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
73d0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
73e0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
73f0: 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20  eHandle);..     
7400: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
7410: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
7420: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
7430: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
7490: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
74a0: 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f  /// Combines two
74b0: 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a   path strings...
74c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
74d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
74e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
74f0: 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h1">..      /// 
7500: 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d  The first path -
7510: 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  OR- null...     
7520: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7530: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7540: 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20  name="path2">.. 
7550: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63       /// The sec
7560: 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75  ond path -OR- nu
7570: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
7580: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
7590: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
75a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62      /// The comb
75b0: 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67  ined path string
75c0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f   -OR- null if bo
75d0: 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  th of the origin
75e0: 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f  al path..      /
75f0: 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e  // strings are n
7600: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
7610: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7620: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7630: 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d   string MaybeCom
7640: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
7650: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
7660: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  1,..          st
7670: 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20  ring path2..    
7680: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
7690: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
76a0: 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path1 != null)..
76b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
76c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
76d0: 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath2 != null).. 
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76f0: 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d   return Path.Com
7700: 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68  bine(path1, path
7710: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
7720: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
7730: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7740: 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20  n path1;..      
7750: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7760: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
7770: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7780: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
7790: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
77a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
77b0: 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20  ath2;..         
77c0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
77e0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
77f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
7800: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
7860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7870: 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61  // Resets the ca
7880: 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ched XML configu
7890: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
78a0: 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72   value, thus for
78b0: 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  cing the..      
78c0: 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f  /// next call to
78d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43   <see cref="GetC
78e0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
78f0: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
7900: 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20  d to rely..     
7910: 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73   /// upon the <s
7920: 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43  ee cref="GetXmlC
7930: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
7940: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63  > method to fetc
7950: 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  h the..      ///
7960: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
7970: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  on file name... 
7980: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7990: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
79a0: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
79b0: 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  esetCachedXmlCon
79c0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20  figFileName().. 
79d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
79e0: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
79f0: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
7a00: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
7a10: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
7a20: 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
7a30: 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
7a40: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
7a50: 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ame");..#endif..
7a60: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7a70: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7a80: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
7a90: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
7aa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7ab0: 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e      cachedXmlCon
7ac0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  figFileName = nu
7ad0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
7ae0: 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69     noXmlConfigFi
7af0: 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d  leName = false;.
7b00: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
7b10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
7b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b60: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
7b70: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7b80: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
7b90: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
7ba0: 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66   cached XML conf
7bb0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
7bc0: 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20  ame for the..   
7bd0: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
7be0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d  containing the m
7bf0: 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61  anaged System.Da
7c00: 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e  ta.SQLite compon
7c10: 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20  ents, if..      
7c20: 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20  /// available.  
7c30: 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58 4d  If the cached XM
7c40: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
7c50: 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20  file name value 
7c60: 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  is not..      //
7c70: 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65  / available, the
7c80: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58   <see cref="GetX
7c90: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
7ca0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
7cb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75  ..      /// be u
7cc0: 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68  sed to obtain th
7cd0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
7ce0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
7cf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7d00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7d10: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
7d20: 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e   /// The XML con
7d30: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
7d40: 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  name -OR- null i
7d50: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
7d60: 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20  etermined..     
7d70: 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74   /// or does not
7d80: 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f   exist...      /
7d90: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
7da0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
7db0: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61  tic string GetCa
7dc0: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
7dd0: 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b  eName()..      {
7de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
7df0: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
7e00: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
7e10: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
7e20: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
7e30: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
7e40: 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  _GetCachedXmlCon
7e50: 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a  figFileName");..
7e60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7e70: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7e80: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
7e90: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
7ea0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7eb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7ec0: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
7ed0: 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  ileName != null)
7ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ef0: 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65      return cache
7f00: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7f10: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
7f20: 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f       if (noXmlCo
7f30: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20  nfigFileName).. 
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f50: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7f60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7f70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
7f80: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
7f90: 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ame();..      }.
7fa0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ff0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
8000: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8010: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
8020: 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63  eturns the XML c
8030: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
8040: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61  e name for the a
8050: 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f  ssembly..      /
8060: 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  // containing th
8070: 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d  e managed System
8080: 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d  .Data.SQLite com
8090: 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20  ponents...      
80a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
80b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
80c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
80d0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
80e0: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d  tion file name -
80f0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
8100: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
8110: 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ned..      /// o
8120: 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  r does not exist
8130: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
8140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
8150: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8160: 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69  ring GetXmlConfi
8170: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
8180: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8190: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
81a0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
81b0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
81c0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
81d0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
81e0: 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69  thod_GetXmlConfi
81f0: 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65  gFileName");..#e
8200: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8210: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8220: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
8230: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
8240: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
8250: 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Name;....#if !PL
8260: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8270: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
8280: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41     directory = A
8290: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
82a0: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
82b0: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
82c0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62   fileName = Mayb
82d0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
82e0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
82f0: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
8300: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
8310: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
8320: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
8330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8340: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
8350: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
8360: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8370: 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64            cached
8380: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
8390: 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  e = fileName;.. 
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
83b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83c0: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
83d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
83e0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
83f0: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
8400: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
8410: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20  Directory();..  
8420: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
8430: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
8440: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
8450: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
8460: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
8470: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
8480: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
8490: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
84a0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
84b0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
84c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67   cachedXmlConfig
84f0: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e  FileName = fileN
8500: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
8510: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8520: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
8530: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
8540: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8550: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
8560: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
8570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8580: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
8590: 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d  ileName = true;.
85a0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
85b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
85c0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
85d0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
85e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
8630: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8640: 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
8650: 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
8660: 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f  supported XML co
8670: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8680: 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f   tokens..      /
8690: 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73  // with their as
86a0: 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e  sociated values.
86b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
86c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
86d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
86e0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
86f0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
8700: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
8710: 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e  ration file bein
8720: 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  g read...      /
8730: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8740: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8750: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
8760: 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67     /// A setting
8770: 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d   value read from
8780: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
8790: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
87a0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
87b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
87c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
87d0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
87e0: 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  e <paramref name
87f0: 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c  ="value" /> will
8800: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
8810: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
8820: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8830: 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64   tokens replaced
8840: 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c  .  No return val
8850: 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a  ue is reserved..
8860: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64        /// to ind
8870: 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20  icate an error. 
8880: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e   This method can
8890: 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20  not fail...     
88a0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
88b0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
88c0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70  tatic string Rep
88d0: 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  laceXmlConfigFil
88e0: 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20  eTokens(..      
88f0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
8900: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8910: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
8920: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
8930: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
8940: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
8950: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
8960: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
8970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8980: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
8990: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
89a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
89b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
89c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89f0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
8a00: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
8a10: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
8a20: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
8a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a40: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
8a50: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
8a60: 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
8a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a90: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
8aa0: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
8ab0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ad0: 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63    XmlConfigDirec
8ae0: 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
8af0: 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8b20: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
8b30: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
8b40: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
8b60: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
8b70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8b80: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
8b90: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
8ba0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8bb0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8bc0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8bd0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
8be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bf0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
8c30: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
8c40: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
8c50: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
8c80: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
8c90: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
8ca0: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
8cd0: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
8ce0: 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20  place XML " +.. 
8cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f               "co
8d10: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8d20: 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a   \"{0}\" tokens:
8d30: 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d50: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
8d60: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
8d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d80: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8da0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8dd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
8de0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
8df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e00: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
8e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
8e40: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8e50: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
8e60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8eb0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
8ec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8ed0: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
8ee0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
8ef0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
8f00: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
8f10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
8f20: 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d  /// specified XM
8f30: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
8f40: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
8f50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8f60: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8f70: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
8f80: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
8f90: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
8fa0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8fb0: 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   to read...     
8fc0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8fd0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8fe0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
8ff0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
9000: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
9010: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
9020: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
9030: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
9040: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
9050: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
9060: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
9070: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
9080: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
9090: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
90a0: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
90b0: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
90c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
90d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
90e0: 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a  name="expand">..
90f0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
9100: 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79  ro to expand any
9110: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
9120: 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73  iable references
9130: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20   contained in.. 
9140: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74       /// the set
9150: 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65  ting value to be
9160: 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73   returned.  This
9170: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
9180: 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
9190: 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72    /// Compact Fr
91a0: 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20  amework...      
91b0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
91c0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
91d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
91e0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
91f0: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
9200: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
9210: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
9220: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
9230: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
9240: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
9250: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
9260: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
9270: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
9280: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
9290: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
92a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
92b0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
92c0: 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
92d0: 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
92e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
92f0: 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  eName, /* in */.
9300: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9310: 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69  g name,     /* i
9320: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
9330: 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c  string @default,
9340: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
9350: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
9360: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
9370: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
9380: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9390: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
93a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
93b0: 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d  if ((fileName ==
93c0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20   null) || (name 
93d0: 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
93e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
93f0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
9400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
9410: 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d  mlDocument docum
9420: 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63  ent = new XmlDoc
9430: 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ument();....    
9440: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
9450: 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65  nt.Load(fileName
9460: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
9470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9480: 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  XmlElement eleme
9490: 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65  nt = document.Se
94a0: 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d  lectSingleNode(.
94b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
94c0: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
94d0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
94e0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
94f0: 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
9500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
9510: 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61  /configuration/a
9520: 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40  ppSettings/add[@
9530: 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d  key='{0}']", nam
9540: 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20  e)) as..        
9550: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
9560: 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ment; /* throw *
9570: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
9580: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21     if (element !
9590: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
95a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
95b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
95c0: 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b  ng value = null;
95d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
95e0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
95f0: 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22  t.HasAttribute("
9600: 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20  value"))..      
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9620: 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e  value = element.
9630: 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61  GetAttribute("va
9640: 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lue");....      
9650: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9660: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
9670: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9690: 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
96a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
96b0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
96c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
96d0: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
9700: 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72  ment.ExpandEnvir
9710: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28  onmentVariables(
9720: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9740: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
9750: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
9760: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
9770: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9790: 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
97a0: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
97b0: 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20  okens(fileName, 
97c0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
97d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97f0: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
9800: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9810: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9820: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
9830: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9840: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
9850: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
9860: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
9870: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
9880: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
9890: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
98a0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
98b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
98c0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
98d0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
98e0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
98f0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9900: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9920: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
9930: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
9940: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9960: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
9970: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
9980: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
9990: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
99a0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
99b0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
99c0: 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b   get setting \"{
99d0: 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a  0}\" value " +..
99e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99f0: 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20        "from XML 
9a00: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
9a10: 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22  le \"{1}\": {2}"
9a20: 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  , name,..       
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
9a40: 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ileName, e)); /*
9a50: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
9a60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9a70: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
9a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
9a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9aa0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
9ab0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
9ac0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
9ad0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9ae0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
9af0: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  fault;..      }.
9b00: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b50: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
9b60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9b70: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
9b80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9b90: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
9ba0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
9bb0: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
9bc0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
9bd0: 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f  that is..      /
9be0: 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
9bf0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9c00: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
9c10: 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  y, if applicable
9c20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9c30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9c40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9c50: 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20  assembly">..    
9c60: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
9c70: 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65  d assembly to re
9c80: 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66 72  ad the target fr
9c90: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
9ca0: 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  e value..      /
9cb0: 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  // from...      
9cc0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
9cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
9ce0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
9cf0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61   value of the ta
9d00: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
9d10: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 66  ttribute value f
9d20: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
9d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61  ..      /// mana
9d40: 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52  ged assembly -OR
9d50: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
9d60: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
9d70: 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20  d.  If this..   
9d80: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
9d90: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
9da0: 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  h a version of t
9db0: 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
9dc0: 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  k prior to..    
9dd0: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e    /// version 4.
9de0: 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  0, the value ret
9df0: 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63  urned MAY reflec
9e00: 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f  t that version o
9e10: 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  f the .NET..    
9e20: 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20    /// Framework 
9e30: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f  instead of the o
9e40: 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ne associated wi
9e50: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9e60: 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20   managed..      
9e70: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  /// assembly... 
9e80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9e90: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
9ea0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
9eb0: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
9ec0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
9ed0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
9ee0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
9ef0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
9f10: 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
9f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
9f30: 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54  if NET_40 || NET
9f40: 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c  _45 || NET_451 |
9f50: 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54  | NET_452 || NET
9f60: 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c  _46 || NET_461 |
9f70: 7c 20 4e 45 54 5f 34 36 32 0d 0a 20 20 20 20 20  | NET_462..     
9f80: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fb0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
9fc0: 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
9ff0: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
a000: 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a020: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a030: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
a040: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
a050: 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  te targetFramewo
a060: 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  rk =..          
a070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a080: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
a090: 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20  Attribute)..    
a0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0b0: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47        assembly.G
a0c0: 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74  etCustomAttribut
a0d0: 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
a0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0f0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
a100: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
a110: 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d  te), false)[0];.
a120: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a140: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e  targetFramework.
a150: 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a  FrameworkName;..
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a170: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
a180: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
a190: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
a1a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a1c0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
a1d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
a1e0: 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20  elif NET_35..   
a1f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a200: 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
a210: 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d  ,Version=v3.5";.
a220: 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20  .#elif NET_20.. 
a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a240: 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f  urn ".NETFramewo
a250: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22  rk,Version=v2.0"
a260: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
a270: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a280: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
a290: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
a2a0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a2f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a300: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
a310: 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61  ccepts a long ta
a320: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
a330: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61  ttribute value a
a340: 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f  nd makes it into
a350: 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75   a..      /// mu
a360: 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69  ch shorter versi
a370: 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72  on, suitable for
a380: 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20   use with NuGet 
a390: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20  packages...     
a3a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a3b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
a3c0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
a3d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c  .      /// The l
a3e0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
a3f0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
a400: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
a410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a420: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
a430: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
a440: 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74   /// The short t
a450: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
a460: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
a470: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
a480: 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  cannot..      //
a490: 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  / be determined 
a4a0: 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20  or converted... 
a4b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
a4c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
a4d0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
a4e0: 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
a4f0: 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
a500: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
a510: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
a520: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
a530: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
a540: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
a550: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
a560: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
a570: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a580: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
a590: 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65  place(".NETFrame
a5a0: 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
a5b0: 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20   "net");..      
a5c0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
a5d0: 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53  e.Replace(".", S
a5e0: 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d  tring.Empty);...
a5f0: 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69  .          int i
a600: 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64  ndex = value.Ind
a610: 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20  exOf(',');....  
a620: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
a630: 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
a640: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
a650: 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28  value.Substring(
a660: 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  0, index);....  
a670: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
a680: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
a690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
a6f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a700: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
a710: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
a720: 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e  upported environ
a730: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
a740: 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  kens..      /// 
a750: 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63  with their assoc
a760: 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  iated values... 
a770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a780: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
a790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
a7a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
a7b0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
a7c0: 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69  ead from an envi
a7d0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
a7e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
a7f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
a800: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
a810: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
a820: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
a830: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
a840: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
a850: 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ted..      /// e
a860: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
a870: 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61  ble tokens repla
a880: 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20  ced.  No return 
a890: 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65  value is reserve
a8a0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  d..      /// to 
a8b0: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f  indicate an erro
a8c0: 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  r.  This method 
a8d0: 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20  cannot fail...  
a8e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
a8f0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
a900: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
a910: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
a920: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
a930: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
a940: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
a950: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
a960: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
a970: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
a980: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
a990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a9a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
a9b0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43  directory = GetC
a9c0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
a9d0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
a9e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
a9f0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
aa00: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
aa10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
aa30: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa60: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
aa70: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44         AssemblyD
aaa0: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
aab0: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
aad0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
aae0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
aaf0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
ab00: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
ab10: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
ab20: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
ab30: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
ab40: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
ab50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab60: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
ab70: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ab80: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abd0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
abe0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
abf0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
ac00: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac20: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
ac30: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
ac40: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
ac50: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
ac80: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
ac90: 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20   assembly " +.. 
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 69               "di
acc0: 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b  rectory token: {
acd0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
ace0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
acf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ad40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad50: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad70: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
ad80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ada0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
adb0: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
adc0: 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b  assembly = null;
add0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ade0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
adf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ae00: 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
ae10: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
ae20: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
ae30: 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ly();..         
ae40: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
ae50: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
ae60: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
ae70: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ae80: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
ae90: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
aea0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
aeb0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
aed0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
aee0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
aef0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
af00: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
af20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af30: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
af40: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
af50: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
af60: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
af70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
af80: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
af90: 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69  ntCulture, "Nati
afa0: 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a  ve library " +..
afb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
afc0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
afd0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
afe0: 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67  obtain executing
aff0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
b000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b010: 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c  "assembly: {0}",
b020: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
b030: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
b040: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b050: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
b060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b070: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
b090: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
b0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
b0b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b0c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b0d0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
b0e0: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
b0f0: 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61 72   = AbbreviateTar
b100: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
b110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b120: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
b130: 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65  etFramework(asse
b140: 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly));....     
b150: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
b160: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
b170: 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f  ty(targetFramewo
b180: 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rk))..          
b190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b1a0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b1d0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
b1e0: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d   value.Replace(.
b1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b200: 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
b210: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c  tFrameworkToken,
b220: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
b230: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b240: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
b250: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
b260: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b280: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
b290: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
b2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
b2b0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
b2c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b2d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
b2e0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
b2f0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
b300: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
b310: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b330: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b350: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
b360: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
b370: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
b380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b390: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
b3a0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
b3b0: 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
b3c0: 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3e0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
b3f0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
b400: 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74 20   replace target 
b410: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f     "framework to
b440: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
b450: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b480: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
b490: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
b4a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4c0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
b4d0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
b4f0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
b500: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
b510: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b520: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b530: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
b540: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  ue;..      }..#e
b550: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
b5b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b5c0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
b5d0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
b5e0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
b5f0: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
b600: 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20  using the XML.. 
b610: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
b620: 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f  ration file and/
b630: 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  or the environme
b640: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72  nt variables for
b650: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
b660: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20      /// process 
b670: 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65  and/or the curre
b680: 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20  nt system, when 
b690: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
b6a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b6b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
b6c0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
b6d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
b6e0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
b6f0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
b700: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
b710: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b720: 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20  default">..     
b730: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
b740: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  o be returned if
b750: 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73   the setting has
b760: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
b770: 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20  plicitly..      
b780: 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65  /// or cannot be
b790: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
b7a0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b7b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
b7c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
b7d0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
b7e0: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
b7f0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
b800: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
b810: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
b820: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
b830: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
b840: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
b850: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
b860: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
b870: 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64  etermined.  By d
b880: 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65  efault, all refe
b890: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
b8a0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ng..      /// en
b8b0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
b8c0: 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61  les will be expa
b8d0: 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f  nded to their co
b8e0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75  rresponding valu
b8f0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  es..      /// wi
b900: 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74  thin the value t
b910: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e  o be returned un
b920: 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20  less either the 
b930: 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a  "No_Expand" or..
b940: 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78        /// "No_Ex
b950: 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e  pand_<paramref n
b960: 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65  ame="name" />" e
b970: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
b980: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a  ble is set [to..
b990: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69        /// anythi
b9a0: 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ng]...      /// 
b9b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
b9c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b9d0: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
b9e0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
b9f0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
ba00: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
ba10: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
ba20: 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a  @default /* in *
ba30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
ba40: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
ba50: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ba60: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
ba70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ba80: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
ba90: 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c   special "No_SQL
baa0: 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
bab0: 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ue" environment.
bac0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
bad0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
bae0: 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
baf0: 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
bb00: 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  ill always..    
bb10: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
bb20: 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c  eturn the defaul
bb30: 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  t value...      
bb40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
bb50: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
bb60: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
bb70: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
bb80: 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
bb90: 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56  QLiteGetSettingV
bba0: 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  alue") != null).
bbb0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bbd0: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20  rn @default;..  
bbe0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
bbf0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
bc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bc50: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
bc60: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
bc70: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
bc80: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
bc90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcd0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
bce0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
bcf0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
bd00: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
bd10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
bd20: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
bd30: 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
bd40: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
bd50: 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  rom the environm
bd60: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
bd70: 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69  /       or possi
bd80: 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  bly from the XML
bd90: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
bda0: 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a  ile; create or..
bdb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
bdc0: 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65     increment the
bdd0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74 61   appropriate sta
bde0: 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20  tistic now...   
bdf0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
be00: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
be10: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
be20: 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66  eadCount(name, f
be30: 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alse);..#endif..
be40: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
be50: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
be60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bea0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
beb0: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
bec0: 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52   = true; /* SHAR
bed0: 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20  ED: Environment 
bee0: 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67  -AND- XML config
bef0: 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20   file. */....   
bf00: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
bf50: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
bf60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
bf70: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
bf80: 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
bf90: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
bfa0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
bfb0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
bfc0: 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
bfd0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
bfe0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bff0: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
c000: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c010: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
c020: 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
c030: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
c040: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
c050: 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
c060: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
c070: 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
c080: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
c090: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
c0a0: 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70           "No_Exp
c0b0: 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29  and_{0}", name))
c0c0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
c0d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c0e0: 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
c0f0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
c100: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c110: 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
c120: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
c130: 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29  ntVariable(name)
c140: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
c150: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
c160: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
c170: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
c180: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c190: 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20  (expand)..      
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
c1b0: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
c1c0: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
c1d0: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
c1e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
c1f0: 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
c200: 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
c210: 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c  riableTokens(val
c220: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
c230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
c240: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
c250: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c260: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
c270: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c280: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
c290: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51  E: If the "No_SQ
c2a0: 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  LiteXmlConfigFil
c2b0: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
c2c0: 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20  ariable is..    
c2d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
c2e0: 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d  et [to anything]
c2f0: 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  , this method wi
c300: 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66 72  ll NEVER read fr
c310: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
c320: 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63    //       XML c
c330: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c340: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
c350: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
c360: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
c370: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
c380: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
c390: 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58       "No_SQLiteX
c3a0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21  mlConfigFile") !
c3b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c3c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c3d0: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
c3e0: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ult;..          
c3f0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
c400: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
c410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c450: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
c460: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
c470: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
c480: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c490: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c4a0: 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
c4b0: 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
c4c0: 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d  alue from the XM
c4d0: 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  L..          // 
c4e0: 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
c4f0: 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65  ion file; create
c500: 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68   or increment th
c510: 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
c520: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c530: 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e    statistic now.
c540: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c550: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
c560: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74  ata.IncrementSet
c570: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61  tingReadCount(na
c580: 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64  me, true);..#end
c590: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
c5a0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
c5b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
c600: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c610: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56  GetSettingValueV
c620: 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28  iaXmlConfigFile(
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c640: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
c650: 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61  igFileName(), na
c660: 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78  me, @default, ex
c670: 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pand);..      }.
c680: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
c6e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c6f0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76  WORK..      priv
c700: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
c710: 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49  g ListToString(I
c720: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
c730: 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  t)..      {..   
c740: 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20         if (list 
c750: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
c760: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
c770: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
c780: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
c790: 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72  result = new Str
c7a0: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
c7b0: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
c7c0: 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65  ch (string eleme
c7d0: 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20  nt in list)..   
c7e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c7f0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
c800: 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent == null)..  
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c820: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
c830: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
c840: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
c850: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c860: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
c870: 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20  nd(' ');....    
c880: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
c890: 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29  .Append(element)
c8a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
c8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
c8c0: 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69  rn result.ToStri
c8d0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ng();..      }..
c8e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
c8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c930: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
c940: 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68  te static int Ch
c950: 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75  eckForArchitectu
c960: 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28  resAndPlatforms(
c970: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
c980: 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
c990: 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73           ref Lis
c9a0: 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
c9b0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
c9c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c9d0: 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
c9e0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
c9f0: 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e  if (matches == n
ca00: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ca10: 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65      matches = ne
ca20: 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29  w List<string>()
ca30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
ca40: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
ca50: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
ca60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ca70: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
ca80: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
ca90: 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20  tory) &&..      
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f              (pro
cab0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
cac0: 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e  rePlatforms != n
cad0: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
cae0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
caf0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
cb00: 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c  h (KeyValuePair<
cb10: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
cb20: 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20  pair..          
cb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb40: 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72    in processorAr
cb50: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
cb60: 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rms)..          
cb70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
cba0: 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69  xists(MaybeCombi
cbb0: 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
cbc0: 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20  , pair.Key))).. 
cbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc00: 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61    matches.Add(pa
cc10: 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ir.Key);..      
cc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc30: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
cc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc70: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70  string value = p
cc80: 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20  air.Value;....  
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
ccb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
cd00: 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
cd10: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
cd20: 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a  tory, value)))..
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd60: 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76     matches.Add(v
cd70: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
cdc0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cdd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cde0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cdf0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
ce00: 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lt;..      }....
ce10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ce20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ce60: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
ce70: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65   static bool Che
ce80: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
ce90: 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  se(..          A
cea0: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
ceb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
cec0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
ced0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
cee0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cef0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
cf00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
cf10: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d    if (assembly =
cf20: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
cf30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cf40: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
cf50: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
cf60: 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65   codeBase = asse
cf70: 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a  mbly.CodeBase;..
cf80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf90: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
cfa0: 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73  lOrEmpty(codeBas
cfb0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
cfc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
cfd0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
cfe0: 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20        Uri uri = 
cff0: 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65  new Uri(codeBase
d000: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d010: 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69    string localFi
d020: 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63  leName = uri.Loc
d030: 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  alPath;....     
d040: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
d050: 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46  le.Exists(localF
d060: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d080: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
d090: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
d0a0: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
d0b0: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
d0c0: 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
d0d0: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69           localFi
d0e0: 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
d0f0: 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  w */....        
d100: 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c        string xml
d110: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
d120: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
d130: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
d140: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c        directory,
d150: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
d160: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
d170: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
d180: 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46  xists(xmlConfigF
d190: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
d1a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
d1b0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
d1c0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
d1d0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
d1e0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d210: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d220: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
d230: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
d240: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d260: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d270: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d290: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
d2a0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
d2b0: 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ound XML configu
d2c0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d  ration file " +.
d2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d2e0: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
d2f0: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
d300: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
d310: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
d320: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d340: 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
d350: 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
d360: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
d370: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d380: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
d390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d3a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
d3c0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
d3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d3e0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
d400: 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
d410: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
d420: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d430: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
d440: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d450: 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74           List<st
d460: 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20  ring> matches = 
d470: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
d480: 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b         if (Check
d490: 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
d4a0: 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72  AndPlatforms(dir
d4b0: 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63  ectory, ref matc
d4c0: 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20  hes) > 0)..     
d4d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
d4e0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
d4f0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
d500: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
d510: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
d520: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d540: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d550: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
d560: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
d570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d590: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d5a0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5c0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
d5d0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
d5e0: 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d  ound native sub-
d5f0: 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d  directories " +.
d600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d610: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
d620: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
d630: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
d640: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
d650: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
d660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d670: 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61   ListToString(ma
d680: 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72  tches))); /* thr
d690: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
d6a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
d6c0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
d6d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6f0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
d700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d710: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
d720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d730: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
d740: 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
d750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d760: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
d770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d780: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d790: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
d7a0: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
d7b0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
d7c0: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
d7d0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
d7e0: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
d7f0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
d800: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
d810: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d820: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
d830: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
d840: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
d850: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d860: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d880: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
d890: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
d8a0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8c0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
d8d0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
d8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8f0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
d900: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
d910: 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63  r failed to chec
d920: 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d  k code base " +.
d930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d940: 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
d950: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
d960: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
d970: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
d980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d990: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
d9a0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
d9b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d9c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
d9d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
d9e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
d9f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
da00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
da10: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
da20: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
da30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
da80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
da90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  ry>..      /// R
daa0: 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64  esets the cached
dab0: 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74   assembly direct
dac0: 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20  ory value, thus 
dad0: 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74  forcing the next
dae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c  ..      /// call
daf0: 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47   to <see cref="G
db00: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
db10: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
db20: 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20  thod to rely..  
db30: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65      /// upon the
db40: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
db50: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
db60: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66  " /> method to f
db70: 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20  etch the..      
db80: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72  /// assembly dir
db90: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
dba0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
dbb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
dbc0: 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43 61  tic void ResetCa
dbd0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
dbe0: 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
dbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
dc00: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
dc10: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
dc20: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
dc30: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
dc40: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
dc50: 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65  _ResetCachedAsse
dc60: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
dc70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
dc80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
dc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
dca0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
dcb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
dcd0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
dce0: 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
dd00: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
dd10: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
dd20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
dd30: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
dd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd80: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
dd90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
dda0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
ddb0: 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68 65  eturns the cache
ddc0: 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  d directory for 
ddd0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
dde0: 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  rently..      //
ddf0: 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  / being executed
de00: 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20  , if available. 
de10: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 61   If the cached a
de20: 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
de30: 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  y value..      /
de40: 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  // is not availa
de50: 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ble, the <see cr
de60: 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44  ef="GetAssemblyD
de70: 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
de80: 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
de90: 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f  /// be used to o
dea0: 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62  btain the assemb
deb0: 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
dec0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ded0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
dee0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
def0: 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
df00: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
df10: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
df20: 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
df30: 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
df40: 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
df50: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
df60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
df70: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
df80: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
df90: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
dfa0: 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
dfb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dfc0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
dfd0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
dfe0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
dff0: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
e000: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
e010: 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41  ethod_GetCachedA
e020: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
e030: 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
e040: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
e050: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  n....          l
e060: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
e070: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
e080: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e090: 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65 6d   if (cachedAssem
e0a0: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20  blyDirectory != 
e0b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
e0c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e0d0: 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  cachedAssemblyDi
e0e0: 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20  rectory;....    
e0f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
e100: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
e110: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
e120: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
e130: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  l;..          }.
e140: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
e150: 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
e160: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
e170: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
e1d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e1e0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
e1f0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
e200: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
e210: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
e220: 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
e230: 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
e240: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
e250: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e260: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e270: 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
e280: 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
e290: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
e2a0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
e2b0: 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
e2c0: 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
e2d0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
e2e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
e2f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
e300: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
e310: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
e320: 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
e330: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
e340: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
e350: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
e370: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
e380: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
e390: 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  d_GetAssemblyDir
e3a0: 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
e3b0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
e3c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
e3d0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
e3e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e3f0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
e400: 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
e410: 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
e420: 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
e430: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
e440: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
e450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e460: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e470: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
e480: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
e490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e4b0: 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
e4c0: 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
e4d0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
e4e0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e500: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
e510: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e520: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
e530: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
e540: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
e550: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e560: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
e570: 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
e580: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
e590: 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
e5a0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
e5b0: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
e5c0: 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5f0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
e600: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
e610: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e630: 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
e640: 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e660: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e680: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
e690: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e6a0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
e6b0: 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d  me = assemblyNam
e6c0: 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c  e.CodeBase;..#el
e6d0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
e6e0: 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65    if (!CheckAsse
e6f0: 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73  mblyCodeBase(ass
e700: 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e  embly, ref fileN
e710: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
e720: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
e730: 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  e = assembly.Loc
e740: 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ation;..#endif..
e750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e760: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
e770: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
e780: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
e790: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e7a0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
e7b0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
e7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e7e0: 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
e7f0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
e800: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
e810: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e830: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
e840: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
e860: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
e870: 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
e880: 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65  oryName(fileName
e890: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e8a0: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
e8b0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
e8c0: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
e8d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
e8f0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
e900: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
e910: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
e930: 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
e940: 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
e950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e960: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e970: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
e980: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e990: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e9a0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
e9b0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
e9c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
e9e0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
e9f0: 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72  ctory = director
ea00: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
ea10: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ea20: 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
ea30: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
ea40: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
ea50: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
ea60: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
ea70: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
ea80: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
ea90: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
eaa0: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
eab0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
eac0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
ead0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
eae0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
eaf0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
eb00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
eb20: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
eb30: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
eb40: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
eb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb60: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
eb70: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
eb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb90: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
eba0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
ebb0: 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72 65  iled to get dire
ebc0: 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  ctory " +..     
ebd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebe0: 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20   "for currently 
ebf0: 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
ec00: 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
ec10: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
ec20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ec30: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ec40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ec60: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
ec70: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
ec80: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
ec90: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
eca0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
ecb0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
ecc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ecd0: 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
ece0: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
ecf0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
ed00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
ed10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
ed20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
ed30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ed40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ed90: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
eda0: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
edb0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
edc0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
edd0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
ede0: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
edf0: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
ee00: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
ee10: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
ee20: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
ee30: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
ee40: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
ee50: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
ee60: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
ee70: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
ee80: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
ee90: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
eea0: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
eeb0: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
eec0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
eed0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
eee0: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
eef0: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
ef00: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
ef10: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
ef20: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
ef30: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
ef40: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
ef50: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
ef60: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
ef70: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
ef80: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
ef90: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
efa0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
efb0: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
efc0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
efd0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
efe0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
eff0: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
f000: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
f010: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
f020: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
f030: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
f040: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
f050: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
f060: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
f070: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
f080: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
f090: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f0a0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
f0b0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
f0c0: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
f0d0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
f0e0: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
f0f0: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
f100: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
f110: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
f120: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
f130: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
f140: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
f150: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
f160: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
f170: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
f180: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
f190: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
f1e0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
f1f0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
f200: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f210: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
f220: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
f230: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
f240: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
f250: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
f260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f270: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
f280: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
f290: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
f2a0: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
f2b0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
f2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
f310: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f320: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
f330: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
f340: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
f350: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
f360: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
f370: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
f380: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
f390: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f3a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
f3b0: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
f3c0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
f3d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
f3e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
f3f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
f450: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f460: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
f470: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
f480: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
f490: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
f4a0: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
f4b0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
f4c0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
f4d0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
f4e0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
f4f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f500: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f510: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
f520: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
f530: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
f540: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
f550: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
f560: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
f570: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
f580: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
f590: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
f5a0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
f5b0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
f5c0: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
f5d0: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
f5e0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
f5f0: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
f600: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
f610: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
f620: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
f630: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
f640: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
f650: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
f660: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
f670: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
f680: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
f690: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f6b0: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
f6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
f6d0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
f6e0: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
f6f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
f750: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f760: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
f770: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
f780: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
f790: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
f7a0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
f7b0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
f7c0: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
f7d0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
f7e0: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
f7f0: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
f800: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
f810: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
f820: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
f830: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
f840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
f850: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
f860: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
f870: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
f880: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
f890: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
f8a0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
f8b0: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
f8c0: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
f8d0: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
f8e0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
f8f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
f900: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
f910: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
f920: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
f930: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
f940: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
f950: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
f960: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
f970: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
f980: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
f990: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
f9a0: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
f9b0: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
f9c0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
f9d0: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
f9e0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
f9f0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
fa00: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
fa10: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
fa20: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
fa30: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
fa40: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
fa50: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
fa60: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
fa70: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
fa80: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
fa90: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
faa0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
fab0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
fac0: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
fad0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
fae0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
faf0: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
fb00: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
fb10: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
fb20: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
fb30: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
fb40: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
fb50: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
fb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
fb70: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fb90: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
fba0: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
fbb0: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
fbc0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
fbd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fbe0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
fbf0: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
fc00: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
fc10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fc20: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
fc30: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
fc40: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
fc50: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
fc60: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
fc70: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
fc80: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
fc90: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
fca0: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
fcb0: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
fcc0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
fcd0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
fce0: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
fcf0: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
fd00: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
fd10: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
fd20: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
fd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fd40: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
fd50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fd60: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fd70: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
fd80: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
fd90: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
fda0: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
fdb0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
fdc0: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
fdd0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
fde0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
fdf0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
fe00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
fe10: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
fe20: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
fe30: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
fe40: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
fe50: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
fe60: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
fe70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
fe80: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
fe90: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
fea0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
feb0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
fec0: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
fed0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
fee0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
fef0: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
ff00: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
ff10: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
ff20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
ff30: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ff40: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
ff50: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
ff60: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
ff70: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
ff80: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
ff90: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
ffa0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
ffb0: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
ffc0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
ffd0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
ffe0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
fff0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
10000 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
10010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10020 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
10030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
10040 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
10050 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
10060 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
10070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10090 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
100a0 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
100b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100c0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
100d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
100e0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
100f0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
10100 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
10110 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
10120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
10130 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
10140 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
10150 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10170 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
10180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10190 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
101a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
101b0 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
101c0 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
101d0 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
101e0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
101f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
10200 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
10210 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
10220 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
10250 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
10260 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
10270 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
10280 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10290 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
102a0 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
102b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
102c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
102d0 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
102e0 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
102f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10300 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
10310 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
10320 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10340 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
10350 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10370 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
10380 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
10390 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
103a0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
103b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103c0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
103d0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
103e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10400 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
10410 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
10420 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
10430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10450 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
10460 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
10470 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
10480 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104a0 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
104b0 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
104c0 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
104d0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
104e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104f0 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
10500 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
10540 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
10550 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10570 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
10580 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
105a0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105c0 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
105d0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105f0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
10600 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
10610 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10630 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
10640 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
10650 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10660 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10670 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10690 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
106a0 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
106b0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10700 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
10710 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10720 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
10730 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
10740 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
10750 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
10760 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
10770 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
10780 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10790 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
107a0 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
107b0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
107c0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
107d0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
107e0 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
107f0 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
10800 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
10810 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
10820 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10830 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10840 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
10850 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
10860 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
10870 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
10880 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
10890 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
108a0 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
108b0 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
108c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
108d0 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
108e0 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
108f0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
10900 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
10910 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
10920 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
10930 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
10940 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
10950 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
10960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
10970 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
10980 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
10990 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
109a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
109b0 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
109c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
109d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
109e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
109f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
10a00 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
10a10 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
10a20 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
10a30 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
10a40 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
10a50 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
10a60 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
10a70 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
10a80 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10a90 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
10aa0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
10ab0 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
10ac0 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
10ad0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
10ae0 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
10af0 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
10b00 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
10b10 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
10b20 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
10b30 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
10b40 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10b50 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
10b60 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
10b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b80 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
10b90 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
10ba0 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
10bb0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10bc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10bd0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
10be0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
10bf0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
10c00 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
10c10 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c30 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
10c40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
10c50 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
10c60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
10c70 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
10c80 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
10c90 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
10ca0 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
10cb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
10cc0 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
10cd0 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
10ce0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
10cf0 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
10d00 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
10d10 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
10d20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
10d30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10d40 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
10d50 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
10d60 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
10d70 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
10d80 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
10d90 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
10da0 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
10db0 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
10dc0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
10dd0 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
10de0 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
10df0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
10e00 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e50 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
10e60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10e70 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
10e80 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
10e90 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
10ea0 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
10eb0 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
10ec0 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
10ed0 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
10ee0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10ef0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
10f00 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
10f10 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
10f20 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
10f30 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
10f40 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
10f50 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
10f60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
10f70 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
10f80 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
10f90 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
10fa0 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
10fb0 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
10fc0 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
10fd0 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
10fe0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
10ff0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
11000 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
11010 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
11020 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
11030 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
11040 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
11050 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
11060 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
11070 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
11080 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
11090 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
110a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
110b0 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
110c0 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
110d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
110e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110f0 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
11100 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
11110 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11130 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
11140 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
11150 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
11190 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
111a0 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
111c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
111d0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
111e0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
111f0 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
11200 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11250 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
11260 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11270 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
11280 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
11290 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
112a0 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
112b0 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
112c0 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
112d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
112e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
112f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
11300 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
11310 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
11320 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
11330 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
11340 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
11350 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
11360 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
11370 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11380 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
11390 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
113a0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
113b0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
113c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
113d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
113e0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
113f0 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
11400 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
11410 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
11420 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
11430 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
11440 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
11450 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
11460 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
11470 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
11480 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
11490 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
114a0 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
114b0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
114c0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
114e0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
114f0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11500 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
11510 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
11520 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11530 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
11540 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11550 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
11560 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
11570 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11580 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
11590 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
115a0 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
115b0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
115c0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
115d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
115e0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
115f0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
11600 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
11610 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11660 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11670 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11680 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
11690 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
116a0 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
116b0 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
116c0 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
116d0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
116e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
116f0 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
11700 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
11710 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
11720 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
11730 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11740 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
11750 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
11760 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
11770 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
11780 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
11790 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
117a0 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
117b0 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
117c0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
117d0 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
117e0 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
117f0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
11800 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
11810 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
11820 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
11830 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
11840 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
11850 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
11860 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
11870 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
11880 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
11890 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
118a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
118b0 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
118c0 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
118d0 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
118e0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
118f0 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
11900 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
11910 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
11920 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
11930 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
11940 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
11950 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
11960 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
11970 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
11980 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
11990 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
119a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
119b0 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
119c0 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
119d0 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
119e0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
119f0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
11a00 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
11a10 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
11a20 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
11a30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11a40 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
11a50 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
11a60 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
11a70 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
11a80 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
11a90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11ab0 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
11ac0 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
11ad0 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
11ae0 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
11af0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
11b00 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
11b10 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
11b20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
11b30 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
11b40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
11b50 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
11b60 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
11b70 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
11b80 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
11b90 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
11ba0 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
11bb0 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
11bc0 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
11bd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11be0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
11bf0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
11c00 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
11c10 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
11c20 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
11c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11c40 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
11c50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11c60 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11c80 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
11c90 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
11ca0 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
11cb0 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
11cd0 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
11ce0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
11cf0 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
11d00 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
11d10 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d30 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
11d40 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
11d50 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d70 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11d80 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11da0 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
11db0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
11dc0 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
11dd0 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
11de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11df0 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
11e00 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
11e10 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
11e20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
11e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e40 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
11e50 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
11e60 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
11e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e80 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
11e90 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
11ea0 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
11eb0 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ed0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
11ee0 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
11ef0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
11f00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11f10 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f40 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
11f50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11f60 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
11f70 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
11f80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
11f90 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
11fa0 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
11fb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11fc0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11fd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
11fe0 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
11ff0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
12000 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
12010 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
12020 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
12030 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
12040 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
12050 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
12060 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
12070 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
12080 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
12090 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
120a0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
120b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
120c0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
120d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
120f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12100 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
12110 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
12120 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
12130 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12150 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
12160 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
12170 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
12180 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
121b0 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
121c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
121e0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
121f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
12200 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  32.SYSTEM_INFO s
12210 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20  ystemInfo;....  
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12230 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12240 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
12250 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
12260 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
12270 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12290 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
122a0 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
122b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
122c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
122d0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
122e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
122f0 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66  n32.GetSystemInf
12300 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
12310 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12320 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12340 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
12350 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
12360 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
12370 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12390 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
123a0 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
123b0 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123d0 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77      systemInfo.w
123e0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
123f0 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
12400 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12410 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12420 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
12430 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
12450 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
12460 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
12480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12490 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
124a0 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
124b0 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54  empty string.  T
124c0 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74  his will prevent
124d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
124e0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c  //       the cal
124f0 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d  ling method from
12500 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69   considering thi
12510 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d  s method call a.
12520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12530 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65  /       "failure
12540 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "...            
12550 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12560 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
12570 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69  hitecture = Stri
12580 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
12590 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
125a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
125b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
12600 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
12610 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
12620 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
12680 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12690 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74       /// Given t
126a0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
126b0 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72  hitecture, retur
126c0 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
126d0 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  he platform...  
126e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
126f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
12700 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
12710 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12720 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
12730 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
12740 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74  itecture to be t
12750 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70  ranslated to a p
12760 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
12770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
12780 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
12790 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
127a0 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  / The platform n
127b0 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  ame for the spec
127c0 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
127d0 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52  architecture -OR
127e0 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  - null..      //
127f0 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  / if it cannot b
12800 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
12810 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
12820 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
12830 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
12840 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
12850 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
12860 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
12870 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20  hitecture /* in 
12880 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
12890 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
128a0 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
128b0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
128c0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
128d0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
128e0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
128f0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
12900 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
12910 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
12920 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
12930 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
12940 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
12950 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
12960 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
12970 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
12980 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
12990 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
129a0 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
129b0 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
129c0 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
12a10 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
12a20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
12a30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
12a40 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56  latforms.TryGetV
12a50 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
12a60 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
12a70 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12a80 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d  re, out platform
12a90 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
12aa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12ab0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12ac0 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  n platformName;.
12ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
12ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
12af0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
12b00 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
12b10 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b60 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
12b70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12b80 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
12b90 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
12ba0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62  SQLite library b
12bb0 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ased on the spec
12bc0 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
12bd0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70   directory and p
12be0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
12bf0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
12c00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12c10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12c20 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
12c30 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
12c40 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
12c50 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20  ry to use, null 
12c60 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
12c70 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
12c80 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  of..      /// th
12c90 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
12ca0 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20  ation domain).  
12cb0 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73  This directory s
12cc0 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68  hould contain th
12cd0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
12ce0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
12cf0 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62  ure specific sub
12d00 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20  -directories... 
12d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
12d20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
12d30 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
12d40 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
12d50 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
12d60 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65   requested proce
12d70 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
12d80 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
12d90 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20  ult (the..      
12da0 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
12db0 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
12dc0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
12dd0 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72  s).  This caller
12de0 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
12df0 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73  // almost always
12e00 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f   specify null fo
12e10 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  r this parameter
12e20 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
12e30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
12e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
12e50 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
12e60 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
12e70 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61  The candidate na
12e80 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
12e90 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69   name to load wi
12ea0 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72  ll be stored her
12eb0 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  e,..      /// if
12ec0 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
12ed0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12ee0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
12ef0 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f  m name="nativeMo
12f00 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20  duleHandle">..  
12f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
12f20 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
12f30 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
12f40 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c  LoadLibrary will
12f50 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20   be stored..    
12f60 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e    /// here, if n
12f70 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20  ecessary.  This 
12f80 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e  value will be In
12f90 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65  tPtr.Zero if the
12fa0 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20   call to..      
12fb0 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20  /// LoadLibrary 
12fc0 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  fails...      //
12fd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12fe0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
12ff0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
13000 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
13010 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61  e module was loa
13020 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ded successfully
13030 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
13040 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
13050 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
13060 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
13070 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  te static bool P
13080 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
13090 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
130a0 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
130b0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
130c0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
130d0 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
130e0 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20  rArchitecture,  
130f0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
13100 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
13110 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
13120 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  eName, /* out */
13130 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
13140 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64  IntPtr nativeMod
13150 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20  uleHandle    /* 
13160 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
13170 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
13180 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13190 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
131a0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
131b0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
131c0 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
131d0 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20  default..       
131e0 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65     //       (i.e
131f0 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74  . attempt to aut
13200 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63  omatically detec
13210 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20  t it)...        
13220 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13230 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
13240 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
13250 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
13260 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
13270 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
13280 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13290 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
132a0 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
132b0 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
132c0 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
132d0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
132e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
132f0 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
13300 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
13310 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13320 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
13330 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13340 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72    // NOTE: Deter
13350 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69  mine the base fi
13360 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
13370 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
13380 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
13390 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68    //       If th
133a0 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20  is is not known 
133b0 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77  by this class, w
133c0 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
133d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
133e0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
133f0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
13400 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  = GetNativeLibra
13410 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
13420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
13430 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
13440 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
13450 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
13460 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
13470 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13480 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
13490 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
134a0 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
134b0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
134c0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
134d0 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
134e0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
134f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13500 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
13510 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
13520 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
13530 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63  nePath(baseDirec
13540 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
13550 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c       fileNameOnl
13560 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
13570 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
13580 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
13590 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
135a0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
135b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
135c0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
135d0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
135e0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
135f0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
13600 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
13610 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
13620 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
13630 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
13640 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
13650 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
13660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
13670 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
13680 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
13690 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
136a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
136b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
136c0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
136d0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
136e0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
136f0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
13700 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
13710 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
13720 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
13730 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
13740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13750 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13760 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13770 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13780 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
13790 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
137a0 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
137b0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
137c0 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
137d0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
137e0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
137f0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
13800 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13810 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
13820 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
13830 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
13840 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
13850 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
13860 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
13870 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
13880 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
13890 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
138a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
138b0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
138c0 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
138d0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
138e0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
138f0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
13900 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
13910 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
13920 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
13930 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
13940 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13950 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
13960 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
13970 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
13980 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
139a0 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
139b0 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
139c0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
139d0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
139e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
139f0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
13a00 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
13a10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13a20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
13a30 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
13a40 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
13a50 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
13a60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
13a70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13a80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
13a90 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
13aa0 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
13ab0 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
13ac0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
13ad0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13ae0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
13af0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
13b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b10 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
13b20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13b30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13b40 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
13b50 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
13b60 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
13b70 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
13b80 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
13b90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
13ba0 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
13bb0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
13bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
13bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
13be0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
13bf0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
13c00 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
13c10 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c30 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
13c40 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
13c50 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
13c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
13c80 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
13c90 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
13ca0 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
13cb0 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
13cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ce0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
13cf0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13d10 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
13d20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13d30 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
13d40 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
13d50 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
13d60 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
13d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13da0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13db0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
13dc0 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79  TE: Show exactly
13dd0 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72   where we are tr
13de0 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65  ying to load the
13df0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
13e00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
13e10 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
13e20 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  ry from...      
13e30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
13e60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
13e70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
13e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e90 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
13ea0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
13eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ec0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
13ed0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
13ee0 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  er is trying to 
13ef0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
13f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f10 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
13f20 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e  ibrary \"{0}\"..
13f30 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20  .", fileName)); 
13f40 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
13f50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13f60 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
13f70 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
13f80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13f90 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
13fa0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
13fb0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
13fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
13fd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13fe0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
13ff0 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
14000 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
14010 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
14020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14030 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
14040 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
14050 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
14060 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
14070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14080 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
14090 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20  w an exception. 
140a0 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74   This must use t
140b0 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
140c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
140d0 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20         P/Invoke 
140e0 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63  method for the c
140f0 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67  urrent operating
14100 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20   system...      
14110 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
14120 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
14130 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
14140 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
14150 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
14160 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e  ModuleHandle = N
14170 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
14180 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  er.LoadLibrary(f
14190 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
141a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
141b0 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
141c0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
141d0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
141e0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
141f0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
14200 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
14210 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
14220 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
14230 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
14240 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
14250 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
14260 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
14270 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
14280 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
14290 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
142a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
142b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
142c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
142d0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
142e0 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
142f0 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
14300 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
14310 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14330 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
14340 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
14350 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
14360 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14390 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
143a0 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
143b0 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
143c0 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
143d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
143e0 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
143f0 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
14400 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
14410 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
14420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
14430 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
14440 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14460 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14470 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
14480 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
14490 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
144a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
144b0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
144c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
144d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
144e0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
144f0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
14500 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
14510 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
14520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14530 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
14540 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
14550 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
14560 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
14570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14580 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
14590 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
145a0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
145b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
145c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
145e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145f0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
14600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14610 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
14620 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14630 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
14640 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
14650 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
14660 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14670 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
146c0 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
146d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
146e0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
146f0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
14700 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
14710 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
14720 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
14730 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
14740 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
14750 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
14760 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
14770 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
14780 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
14790 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
147a0 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
147b0 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
147c0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
147d0 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
147e0 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
147f0 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
14800 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
14810 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
14820 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
14830 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
14840 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
14850 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
14860 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
14870 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
14880 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
14890 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
148a0 65 2e 49 6e 74 65 72 6f 70 2e 31 30 35 2e 64 6c  e.Interop.105.dl
148b0 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
148c0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
148d0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
148e0 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
148f0 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
14900 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
14910 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
14920 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
14930 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
14940 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
14950 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
14960 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
14970 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
14980 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
14990 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
149a0 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
149b0 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
149c0 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
149d0 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
149e0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
149f0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
14a00 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
14a10 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
14a20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
14a30 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
14a40 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
14a50 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
14a60 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
14a70 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
14a80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
14a90 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
14aa0 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
14ab0 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
14ac0 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
14ad0 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
14ae0 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
14af0 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
14b00 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
14b10 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
14b20 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
14b30 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
14b40 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
14b50 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
14b60 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
14b70 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
14b80 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
14b90 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
14ba0 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
14bb0 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
14bc0 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
14bd0 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
14be0 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
14bf0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
14c00 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14c20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14c30 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14c40 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
14c50 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
14c60 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
14c70 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
14c80 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
14c90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14ca0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14cb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14cc0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14cd0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
14ce0 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
14cf0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
14d00 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
14d10 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
14d20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14d30 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
14d40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14d50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
14d60 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
14d70 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
14d80 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
14d90 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
14da0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
14db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14dc0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14dd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14de0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
14df0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
14e00 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
14e10 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
14e20 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
14e30 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14e40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14e50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14e60 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14e70 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14e80 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
14e90 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14ea0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14eb0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
14ec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ed0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14ee0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14ef0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14f00 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
14f10 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
14f20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14f30 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
14f40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14f50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14f60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14f70 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14f80 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
14f90 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
14fa0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14fb0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
14fc0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
14fd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14fe0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
14ff0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
15000 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
15010 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
15020 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15030 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
15040 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
15050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15060 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
15070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15080 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15090 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
150a0 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
150b0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
150c0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
150d0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
150e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
150f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15100 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15110 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15120 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
15130 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
15140 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15150 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
15160 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
15170 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15180 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
15190 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
151a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
151b0 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
151c0 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
151d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
151e0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
151f0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
15200 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15210 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15220 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15230 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
15240 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
15250 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15260 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
15270 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
15280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15290 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
152a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
152b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
152c0 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
152d0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
152e0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
152f0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
15300 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15310 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15320 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15330 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15340 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
15350 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
15360 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
15370 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15380 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15390 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
153a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
153b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
153c0 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
153d0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
153e0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
153f0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
15400 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
15410 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
15420 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
15430 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15440 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15460 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15470 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15480 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
15490 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
154a0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
154b0 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
154c0 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
154d0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
154e0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
154f0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
15500 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
15510 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
15520 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
15530 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
15540 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
15550 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
15560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15570 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15580 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15590 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
155a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
155b0 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
155c0 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
155d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
155e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
155f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15600 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15610 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
15620 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
15630 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
15640 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
15650 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15660 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15670 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15680 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
15690 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
156a0 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
156b0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
156c0 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
156d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
156e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
156f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15700 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15710 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
15720 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
15730 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
15740 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
15750 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
15760 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
15770 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
15780 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
15790 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
157a0 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
157b0 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
157c0 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
157d0 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
157e0 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
157f0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
15800 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
15810 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
15820 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
15830 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
15840 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
15850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15870 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15880 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
15890 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
158a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
158b0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
158c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
158d0 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
158e0 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
158f0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15900 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15910 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15920 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
15930 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
15940 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
15950 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
15960 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15970 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15980 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15990 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
159a0 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
159b0 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
159c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
159d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
159e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
159f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15a00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15a10 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
15a20 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
15a30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15a40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15a60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
15a70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
15a80 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
15a90 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
15aa0 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
15ab0 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
15ac0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
15ad0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
15ae0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
15af0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
15b00 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
15b10 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
15b20 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
15b30 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15b40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15b50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15b60 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15b70 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15b80 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
15b90 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
15ba0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15bb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15bc0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15bd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15be0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15bf0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
15c00 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
15c10 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
15c20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15c30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15c40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15c50 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
15c60 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
15c70 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  lob_close_intero
15c80 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  p(IntPtr blob);.
15c90 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15ca0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15cb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15cc0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15cd0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15ce0 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
15cf0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
15d00 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
15d10 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
15d20 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
15d30 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
15d40 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
15d50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15d60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15d70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15d80 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15d90 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15da0 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
15db0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
15dc0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
15dd0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
15de0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
15df0 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
15e00 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
15e10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15e20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15e30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15e40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15e50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15e60 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
15e70 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
15e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15e90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15ea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15eb0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
15ec0 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
15ed0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
15ee0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
15ef0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
15f00 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15f10 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
15f20 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
15f30 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
15f40 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
15f50 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
15f60 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
15f70 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
15f80 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
15f90 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
15fa0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15fb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15fc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15fd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15fe0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15ff0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16000 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16010 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16020 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16030 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16040 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16050 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16060 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
16070 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
16080 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
16090 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
160a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
160b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
160c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
160d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
160e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
160f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16100 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16110 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16120 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16130 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16140 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16150 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16160 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
16170 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
16180 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
16190 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
161a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
161b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
161c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
161d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
161e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
161f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16200 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16210 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16220 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16230 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16240 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16250 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
16260 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
16270 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
16280 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
16290 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
162a0 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
162b0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
162c0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
162d0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
162e0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
162f0 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
16300 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16310 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16330 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16340 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16350 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16360 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16370 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16380 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16390 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
163a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
163b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
163c0 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
163d0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
163e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
163f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16410 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16420 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16430 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16440 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16450 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16460 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16470 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16480 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16490 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
164a0 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
164b0 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
164c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
164d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
164e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
164f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16500 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16510 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16520 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16530 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16540 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16550 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16560 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16570 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
16580 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
16590 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
165a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
165b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
165c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
165d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
165e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
165f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16600 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16610 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16620 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16630 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16640 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16650 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16660 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
16670 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
16680 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16690 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
166a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
166b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
166c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
166d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
166e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
166f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16700 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16720 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16730 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16740 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16750 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
16760 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
16770 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16780 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16790 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
167a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
167b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
167c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
167d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
167e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
167f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16810 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16820 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16830 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16840 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
16850 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
16860 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
16870 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
16880 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16890 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
168a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
168b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
168c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
168d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
168e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
168f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16900 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16910 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16920 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
16930 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
16940 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
16950 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16960 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16970 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16980 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16990 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
169a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
169b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
169c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
169d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
169e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
169f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16a00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16a10 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16a20 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
16a30 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
16a40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16a50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16a60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16a70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16a80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16a90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16aa0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16ab0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16ac0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16ad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16ae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16af0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16b00 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16b10 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
16b20 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
16b30 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
16b40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16b60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16b70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16b80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16b90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16ba0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16bb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16bc0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16bd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16be0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
16bf0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
16c00 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
16c10 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16c20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16c40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16c50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16c60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16c70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16c80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16c90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16ca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16cb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16cc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16cd0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16ce0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
16cf0 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
16d00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
16d10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16d20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16d30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16d40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16d50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16d60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16d70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16d80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16d90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16da0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16db0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16dc0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
16dd0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
16de0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
16df0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16e00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16e10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16e20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16e30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16e40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16e50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16e60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16e70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16e80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16e90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16ea0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16eb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16ec0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
16ed0 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
16ee0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16ef0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16f00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16f10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16f20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16f30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16f40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16f50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16f60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16f70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16f80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16f90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16fa0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16fb0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
16fc0 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
16fd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16fe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
170a0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
170b0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
170c0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
170d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
170e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
170f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17100 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17110 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17130 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17150 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17160 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17170 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
17180 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
17190 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
171a0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
171b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
171c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
171d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
171e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
171f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17200 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17210 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17220 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17230 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17240 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17250 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17260 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17270 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
17280 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
17290 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
172a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
172b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
172c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
172d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
172e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
172f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17300 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17310 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17320 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17330 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17340 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17350 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
17360 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
17370 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
17380 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
17390 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
173a0 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
173b0 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
173c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
173d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
173e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
173f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17420 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17430 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17440 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17450 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17460 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17470 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17480 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
17490 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
174a0 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
174b0 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
174c0 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
174d0 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
174e0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
174f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17510 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17520 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17530 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17540 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17550 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
17560 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17570 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
17580 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17590 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
175a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
175b0 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
175c0 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
175d0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
175e0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
175f0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
17600 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
17610 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
17620 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
17630 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
17640 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
17650 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
17660 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
17670 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17680 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
176a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
176b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
176c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
176d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
176e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
176f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17700 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17710 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17720 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
17730 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
17740 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17750 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17760 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17770 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17780 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17790 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
177a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
177b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
177c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
177d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
177e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
177f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17800 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
17810 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
17820 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
17830 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
17840 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
17850 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
17860 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
17870 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
17880 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
17890 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
178a0 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
178b0 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
178c0 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
178d0 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
178e0 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
178f0 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
17900 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
17910 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
17920 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
17930 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
17940 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17950 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
17960 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17970 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17980 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
17990 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
179a0 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
179b0 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
179c0 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
179d0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
179e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
179f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17a00 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
17a10 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
17a20 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
17a30 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
17a40 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
17a50 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
17a60 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
17a70 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
17a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17a90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17aa0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17ab0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17ac0 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
17ad0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
17ae0 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
17af0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
17b00 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17b10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17b20 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17b30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17b40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
17b50 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
17b60 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
17b70 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
17b80 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
17b90 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
17ba0 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
17bb0 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
17bc0 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
17bd0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
17be0 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
17bf0 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
17c00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17c10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
17c20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17c30 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
17c40 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f  e3_table_cursor_
17c50 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
17c60 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74  tmt, int db, int
17c70 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b   tableRootPage);
17c80 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  ....#endif..// !
17c90 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
17ca0 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
17cb0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e  n....    // Stan
17cc0 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67  dard API calls g
17cd0 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72  lobal across ver
17ce0 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72  sions.  There ar
17cf0 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65  e a few instance
17d00 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c  s of interop cal
17d10 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74  ls..    // scatt
17d20 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75  ered in here, bu
17d30 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20  t they are only 
17d40 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54  active when PLAT
17d50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17d60 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65  EWORK is declare
17d70 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  d...    #region 
17d80 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20  standard sqlite 
17d90 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  api calls....#if
17da0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17db0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17dc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17dd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17de0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17df0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17e00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17e10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17e20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17e30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17e40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17e50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62  tPtr sqlite3_lib
17e60 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69  version();....#i
17e70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17e80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17e90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17ea0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17eb0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17ec0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17ed0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17ef0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17f00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17f10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
17f20 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  nt sqlite3_libve
17f30 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d  rsion_number();.
17f40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17f50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17f70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17f80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17f90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17fa0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17fb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17fc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17fd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17fe0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17ff0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18000 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
18010 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18020 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18030 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18040 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18060 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18070 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18080 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
180a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
180b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
180c0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
180d0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
180e0 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
180f0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
18100 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18110 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18120 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18130 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18140 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18150 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18160 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18180 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18190 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
181a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
181b0 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
181c0 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
181d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
181e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
181f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18200 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18210 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18220 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18230 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18240 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18250 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18260 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18270 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18280 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18290 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
182a0 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
182b0 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65  (..        int e
182c0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
182d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
182e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
182f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18300 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18310 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18320 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18330 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18340 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18350 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18360 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18370 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18380 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18390 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
183a0 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
183b0 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
183c0 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
183d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
183e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
183f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18400 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18410 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18420 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18430 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18440 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18450 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18460 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18470 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18480 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18490 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
184a0 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
184b0 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
184c0 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
184d0 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
184e0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
184f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18500 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18510 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18530 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18540 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18550 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18560 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18570 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18580 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18590 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
185a0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
185b0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
185c0 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
185d0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
185e0 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
185f0 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
18600 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
18610 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18620 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18630 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18640 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18650 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18660 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
18670 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
18680 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
18690 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
186a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
186b0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
186c0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
186d0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
186e0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
186f0 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
18700 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
18710 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
18720 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
18730 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
18740 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
18750 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
18760 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18770 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18780 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
18790 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
187a0 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
187b0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
187c0 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
187d0 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
187e0 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
187f0 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
18800 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18810 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18820 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18830 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18840 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18850 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18860 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18870 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18880 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18890 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
188a0 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
188b0 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
188c0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
188d0 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
188e0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
188f0 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
18900 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
18910 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
18920 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
18930 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
18940 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
18950 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
18960 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
18970 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
18980 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
18990 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
189a0 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
189b0 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
189c0 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
189d0 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
189e0 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
189f0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
18a00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18a10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
18a20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
18a30 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
18a40 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
18a50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18a60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18a70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18a80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18a90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18aa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18ab0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18ac0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ad0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18ae0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
18af0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
18b00 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
18b10 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
18b20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
18b30 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
18b40 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
18b50 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
18b60 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
18b70 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
18b80 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
18b90 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
18ba0 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
18bb0 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
18bc0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
18bd0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
18be0 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
18bf0 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
18c00 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
18c10 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
18c20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
18c30 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
18c40 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
18c50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18c60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18c70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18c80 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
18c90 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
18ca0 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
18cb0 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#i
18cc0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18cd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18ce0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18cf0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18d00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18d10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18d20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18d30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18d40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18d50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18d60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
18d70 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
18d80 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
18d90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18da0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18db0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18dc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18dd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18de0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18df0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18e00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18e10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18e20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18e30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18e40 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18e50 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
18e60 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
18e70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18e80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18e90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ea0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18eb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18ec0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18ed0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18ee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18ef0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18f00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18f10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
18f20 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
18f30 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
18f40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18f50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18f70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18f80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18fa0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18fb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18fc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18fd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18fe0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18ff0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19000 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
19010 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
19020 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
19030 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
19040 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79  gsEnum flags, by
19050 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a  te[] vfsName);..
19060 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19070 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19080 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19090 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
190a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
190b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
190c0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
190d0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
190e0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
190f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19100 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
19110 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
19120 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
19130 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19140 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19150 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19160 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66  _open16(string f
19170 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ileName, ref Int
19180 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
19190 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
191a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
191b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
191c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
191d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
191e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
191f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19210 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19220 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19230 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
19240 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
19250 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  upt(IntPtr db);.
19260 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19270 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19280 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19290 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
192a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
192b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
192c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
192d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
192e0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
192f0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
19300 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62  _rowid(IntPtr db
19310 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
19320 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19330 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19350 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19360 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19380 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19390 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
193a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
193b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
193c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
193d0 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
193e0 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
193f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19400 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19410 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19420 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19430 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19440 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19450 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
19460 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19470 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
19480 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
19490 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
194a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
194b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
194c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
194d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
194e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
194f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19500 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
19510 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19520 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
19530 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
19540 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
19550 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
19560 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19570 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19580 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19590 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
195a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
195b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
195c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
195d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
195e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
195f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19600 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19610 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19620 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b  ite3_shutdown();
19630 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19640 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19650 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19670 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19680 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19690 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
196a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
196b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
196c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
196d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
196e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
196f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73  Code sqlite3_bus
19700 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
19710 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
19720 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19730 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19740 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19750 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19760 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19770 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19780 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19790 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
197a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
197b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
197c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
197d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
197e0 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  e sqlite3_clear_
197f0 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20  bindings(IntPtr 
19800 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
19810 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19820 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19830 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19840 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19850 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19860 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19870 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19880 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19890 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
198a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
198b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
198c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
198d0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
198e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
198f0 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
19900 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
19910 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
19920 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19930 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19940 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19970 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19980 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
19990 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
199a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
199b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
199c0 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
199d0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
199e0 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
199f0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
19a00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19a10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19a40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19a60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
19a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19a80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19a90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19aa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19ab0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19ac0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
19ad0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
19ae0 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
19af0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
19b00 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
19b10 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
19b20 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
19b30 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
19b40 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
19b50 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
19b60 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
19b70 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
19b80 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
19b90 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
19ba0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19bb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19bc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19bd0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
19be0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
19bf0 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
19c00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19c10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19c20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19c30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19c40 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
19c50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
19c60 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
19c70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19c80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19c90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19ca0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
19cb0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
19cc0 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
19cd0 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
19ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19cf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19d00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19d10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19d20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19d30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19d40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19d50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19d60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19d70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19d80 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
19d90 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
19da0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
19db0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
19dc0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
19dd0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
19de0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19df0 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
19e00 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
19e10 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
19e20 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
19e30 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
19e40 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
19e50 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
19e60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19e70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19e80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19e90 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
19ea0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
19eb0 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
19ec0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19ed0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19ee0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
19ef0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19f00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
19f10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
19f20 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
19f30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
19f40 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
19f50 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
19f60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19f70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19f80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19f90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19fa0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19fb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19fc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19fe0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19ff0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a000 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a010 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a020 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
1a030 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1a040 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1a050 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a060 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a070 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a080 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a090 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a0a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a0b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a0c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a0d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a0e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a0f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1a100 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1a110 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
1a120 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1a130 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
1a140 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
1a150 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1a160 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a170 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a180 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a190 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a1a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a1b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a1c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a1d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a1e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a1f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a200 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a210 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1a220 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
1a230 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
1a240 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a260 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a290 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a2a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a2b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a2c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a2d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a2e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a2f0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1a300 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
1a310 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
1a320 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
1a330 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
1a340 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a350 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a360 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a370 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a380 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a390 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a3a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a3b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a3c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a3d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a3e0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1a3f0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
1a400 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
1a410 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a420 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a430 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a440 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a450 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a460 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a470 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a480 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a490 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a4a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a4b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a4c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a4d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
1a4e0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
1a4f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a500 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a510 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a520 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a530 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a540 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a550 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a560 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a590 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a5a0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1a5b0 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
1a5c0 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
1a5d0 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#if 
1a5e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a5f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a610 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a620 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a630 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a640 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1a650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a660 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
1a670 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
1a680 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1a690 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
1a6a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a6b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a6c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a6d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a6e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a6f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a700 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a710 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a730 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a740 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a750 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1a760 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
1a770 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a780 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a790 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a7a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a7b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a7c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a7d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a7e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a7f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a800 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
1a810 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
1a820 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
1a830 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
1a840 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1a850 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a860 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a870 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a880 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a890 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a8a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a8b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a8c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a8d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a8e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a8f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1a900 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1a910 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
1a920 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1a930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a960 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a970 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a990 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a9c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a9d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a9e0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1a9f0 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
1aa00 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1aa10 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1aa20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aa30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1aa40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1aa50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aa60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1aa70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1aa80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1aa90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1aaa0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1aab0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1aac0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1aad0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
1aae0 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1aaf0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1ab00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ab10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ab20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ab30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ab40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ab50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ab60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ab70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ab80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ab90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1aba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1abb0 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
1abc0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
1abd0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1abe0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1abf0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ac00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ac10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ac20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ac30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ac40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ac50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ac60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ac70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ac80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ac90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1aca0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1acb0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
1acc0 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
1acd0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1ace0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1acf0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1ad00 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
1ad10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ad20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ad30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ad40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ad50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ad60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ad70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ad80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ad90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ada0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1adb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1adc0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1add0 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
1ade0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1adf0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1ae00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ae10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ae20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ae30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ae40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ae50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ae60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ae70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ae80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ae90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1aea0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1aeb0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
1aec0 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
1aed0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1aee0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1aef0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1af00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1af10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1af20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1af30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1af40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1af50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1af60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1af70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1af80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
1af90 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
1afa0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1afb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1afc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1afd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1afe0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aff0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b000 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b010 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b020 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b030 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b040 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b050 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b060 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
1b070 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
1b080 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b090 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b0a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b0b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b0c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b0d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b0e0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1b0f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b100 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
1b110 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
1b120 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
1b130 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1b140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b150 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b170 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b180 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b190 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b1a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b1b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b1c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b1d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b1e0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b1f0 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
1b200 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
1b210 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b220 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b230 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b240 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b250 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b260 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b270 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1b280 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b290 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
1b2a0 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
1b2b0 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
1b2c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b2d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b2e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b2f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b300 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b310 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b320 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b340 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b350 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b360 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b370 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
1b380 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
1b390 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1b3a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b3b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b3c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b3d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b3e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b3f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b400 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b410 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b420 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b430 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b440 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b450 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1b460 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
1b470 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
1b480 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
1b490 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1b4a0 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1b4b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b4c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b4d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b4e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b4f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b500 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b510 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b520 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1b530 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1b540 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
1b550 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
1b560 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1b570 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b580 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b590 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b5b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b5c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b5d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b5e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b5f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b600 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b610 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b620 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1b630 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
1b640 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
1b650 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
1b660 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
1b670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b690 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b6a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b6b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b6c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b6d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b6e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b6f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b700 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b710 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1b720 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1b730 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
1b740 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
1b750 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
1b760 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b770 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b780 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b7a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b7b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b7c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b7d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b7e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b7f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b800 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b810 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1b820 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1b830 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
1b840 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
1b850 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b860 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b870 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b880 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b890 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b8a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b8b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b8c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b8d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b8e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b8f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1b900 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1b910 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
1b920 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
1b930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b960 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b970 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b990 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b9c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b9d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b9e0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1b9f0 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
1ba00 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
1ba10 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
1ba20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ba30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ba40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ba50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ba60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ba70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ba80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ba90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1baa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1bab0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1bac0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1bad0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1bae0 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
1baf0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
1bb00 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1bb10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bb20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bb30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bb40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bb50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bb60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bb70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1bb80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bb90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1bba0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1bbb0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1bbc0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
1bbd0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1bbe0 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
1bbf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bc00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bc10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bc20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1bc30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1bc40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bc50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1bc60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bc70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1bc80 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
1bc90 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1bca0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
1bcb0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1bcc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bcd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bce0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bcf0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bd00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bd10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bd20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bd30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bd40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bd50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bd60 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1bd70 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
1bd80 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
1bd90 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1bda0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bdb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bdc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bdd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bde0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bdf0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1be00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1be10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1be20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1be30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1be40 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1be50 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
1be60 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1be70 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
1be80 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
1be90 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1bea0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1beb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bec0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bed0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bee0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bef0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bf00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bf10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bf20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1bf30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1bf40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bf50 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1bf60 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
1bf70 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1bf80 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
1bf90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bfa0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bfb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bfc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1bfd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1bfe0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bff0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
1c000 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1c010 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
1c020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c030 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1c040 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1c050 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
1c060 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c070 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1c080 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1c090 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
1c0a0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c0b0 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
1c0c0 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
1c0d0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
1c0e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c0f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c100 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c130 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c140 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1c150 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1c160 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1c170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c180 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1c190 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1c1a0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1c1b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c1c0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1c1d0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c1e0 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
1c1f0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1c200 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
1c210 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c220 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c230 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c260 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c270 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1c280 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1c290 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1c2a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c2b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1c2c0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1c2d0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1c2e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c2f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1c300 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1c310 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
1c320 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1c330 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
1c340 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
1c350 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
1c360 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
1c370 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
1c380 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c390 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c3a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c3b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c3c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c3d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c3e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c3f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c400 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c410 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c420 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c430 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c440 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
1c450 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1c460 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
1c470 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c480 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c490 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c4a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c4b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c4c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c4d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c4e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c4f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c500 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c510 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c520 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1c530 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
1c540 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
1c550 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
1c560 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
1c570 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
1c580 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
1c590 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c5a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c5b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c5c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c5d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c5e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c5f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c600 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c610 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c620 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c640 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
1c650 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
1c660 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c670 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c690 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c6a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c6b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c6c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c6d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c6e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c6f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c700 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1c710 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
1c720 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
1c730 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1c740 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c750 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c760 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c770 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c780 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c790 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c7a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c7b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c7c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c7d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c7e0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1c7f0 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
1c800 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
1c810 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
1c820 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
1c830 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
1c840 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
1c850 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c860 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c870 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c880 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c890 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c8a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c8b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c8c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c8d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c8e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c8f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1c900 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
1c910 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
1c920 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
1c930 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
1c940 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
1c950 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c970 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c990 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c9a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c9b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c9c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c9d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c9e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c9f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ca00 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ca10 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
1ca20 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
1ca30 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
1ca40 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1ca50 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1ca60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ca70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ca80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ca90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1caa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1cab0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1cac0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1cad0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cae0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1caf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1cb00 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1cb10 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
1cb20 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
1cb30 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
1cb40 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1cb50 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1cb60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1cb70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1cb80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cb90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1cba0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1cbb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cbc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1cbd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cbe0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1cbf0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cc00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cc10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1cc20 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
1cc30 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
1cc40 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1cc50 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
1cc60 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
1cc70 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
1cc80 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
1cc90 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
1cca0 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
1ccb0 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
1ccc0 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
1ccd0 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
1cce0 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
1ccf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cd00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cd10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1cd30 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1cd40 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
1cd50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1cd60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1cd70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1cd80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1cda0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1cdb0 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
1cdc0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cdd0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cde0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1cdf0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1ce00 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
1ce10 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
1ce20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ce30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ce40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ce50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1ce60 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1ce70 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1ce80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ce90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cea0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ceb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cec0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1ced0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1cee0 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1cef0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cf00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cf10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1cf20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
1cf30 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
1cf40 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
1cf50 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
1cf60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1cf70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1cf80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cf90 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1cfa0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1cfb0 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
1cfc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cfd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cfe0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1cff0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d000 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1d010 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1d020 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1d030 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d040 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1d050 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1d060 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
1d070 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1d080 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
1d090 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1d0a0 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1d0b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d0c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d0d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d0e0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1d0f0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1d100 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
1d110 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d120 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d130 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d150 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1d160 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1d170 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
1d180 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d190 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d1a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d1b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
1d1c0 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74  onfig_int_refint
1d1d0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
1d1e0 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
1d1f0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c  m op, int value,
1d200 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29   ref int result)
1d210 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d220 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d230 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d260 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d270 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1d280 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1d290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d2a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1d2b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d2c0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d2d0 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f  ite3_rollback_ho
1d2e0 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
1d2f0 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c  LiteRollbackCall
1d300 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1d310 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1d320 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d330 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d350 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d360 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d380 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d390 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d3a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d3b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d3c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1d3d0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
1d3e0 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73  _handle(IntPtr s
1d3f0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1d400 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d410 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d430 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1d440 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1d450 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1d460 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1d470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d480 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1d490 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d4a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1d4b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1d4c0 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  3_db_release_mem
1d4d0 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ory(IntPtr db);.
1d4e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d4f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d500 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d510 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d520 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d530 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d540 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d550 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d570 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d580 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d590 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d5a0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49  e3_db_filename(I
1d5b0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1d5c0 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
1d5d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d5e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d5f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d600 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d610 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d620 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d630 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d650 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d660 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d670 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1d680 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61  t sqlite3_db_rea
1d690 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c  donly(IntPtr db,
1d6a0 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
1d6b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d6c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d6d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d6e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1d6f0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1d700 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
1d710 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1d720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d760 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1d770 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1d780 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66  ename")]..#endif
1d790 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d7a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1d7b0 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
1d7c0 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e  ilename_bytes(In
1d7d0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1d7e0 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
1d7f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d800 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d820 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d830 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d850 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d860 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d870 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d890 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1d8a0 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
1d8b0 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
1d8c0 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
1d8d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d8e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d8f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d900 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d910 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d930 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d940 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d960 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d970 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d980 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1d990 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
1d9a0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1d9b0 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
1d9c0 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
1d9d0 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66  Ptr pvParam, ref
1d9e0 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
1d9f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1da00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1da10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1da20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1da30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1da40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1da50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1da60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1da70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1da80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1da90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1daa0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1dab0 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
1dac0 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
1dad0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dae0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1daf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1db00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1db10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1db20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1db30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1db40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1db50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1db60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1db70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1db80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74   int sqlite3_get
1db90 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50  _autocommit(IntP
1dba0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1dbb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dbc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1dbd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dbe0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1dbf0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1dc00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1dc10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1dc20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dc30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1dc40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1dc50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1dc60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1dc70 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
1dc80 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72  ult_codes(IntPtr
1dc90 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b   db, int onoff);
1dca0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dcb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dcc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dcd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dcf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dd00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dd10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dd20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dd30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dd40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dd50 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1dd60 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72  Code sqlite3_err
1dd70 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
1dd80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dd90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dda0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ddb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ddc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ddd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dde0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ddf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1de00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1de10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1de20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1de30 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1de40 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
1de50 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e  ended_errcode(In
1de60 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1de70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1de80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1de90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1dea0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1deb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1dec0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ded0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1dee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1def0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1df00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1df10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1df20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
1df30 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43  str(SQLiteErrorC
1df40 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e  ode rc); /* 3.7.
1df50 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  15+ */....    //
1df60 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c   Since sqlite3_l
1df70 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  og() takes a var
1df80 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
1df90 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
1dfa0 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
1dfb0 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
1dfc0 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
1dfd0 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  alls.  For now, 
1dfe0 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f  we are only expo
1dff0 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74  sing a single st
1e000 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  ring, and..    /
1e010 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  / depend on the 
1e020 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74  caller to format
1e030 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69   the string...#i
1e040 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e050 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e070 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e080 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e090 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e0a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e0b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e0c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e0d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e0e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1e0f0 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  oid sqlite3_log(
1e100 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e110 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d  iErrCode, byte[]
1e120 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69   zFormat);....#i
1e130 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e140 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e150 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e160 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e170 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e180 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e190 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e1a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e1b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e1c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e1d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e1e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e1f0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
1e200 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rol(IntPtr db, b
1e210 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69  yte[] zDbName, i
1e220 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41  nt op, IntPtr pA
1e230 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  rg);....#if !PLA
1e240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e270 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e280 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e290 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e2a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e2b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e2c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e2d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e2e0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1e2f0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69  sqlite3_backup_i
1e300 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44  nit(IntPtr destD
1e310 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e  b, byte[] zDestN
1e320 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72  ame, IntPtr sour
1e330 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f  ceDb, byte[] zSo
1e340 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  urceName);....#i
1e350 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e360 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e370 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e380 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e390 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e3a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e3b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e3c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e3d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e3e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e3f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e400 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e410 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74  qlite3_backup_st
1e420 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ep(IntPtr backup
1e430 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d  , int nPage);...
1e440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e470 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e4a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e4b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e4c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e4d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e4e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e4f0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
1e500 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
1e510 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
1e520 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e530 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e540 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e550 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e570 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e580 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e590 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e5b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e5c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e5d0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
1e5e0 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
1e5f0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
1e600 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e610 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e620 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e630 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e650 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e660 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e670 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e680 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e690 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e6a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e6b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e6c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
1e6d0 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c  _close(IntPtr bl
1e6e0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
1e6f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e700 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e720 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e730 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e740 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e750 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e760 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e770 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e780 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e790 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e7a0 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28  ite3_blob_bytes(
1e7b0 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
1e7c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e7d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e7e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e7f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e800 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e820 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e840 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e850 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e860 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e870 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1e880 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f  e sqlite3_blob_o
1e890 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  pen(IntPtr db, b
1e8a0 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
1e8b0 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
1e8c0 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f  te[] colName, lo
1e8d0 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c  ng rowId, int fl
1e8e0 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ags, ref IntPtr 
1e8f0 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  ptrBlob);....#if
1e900 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e910 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e920 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e930 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e940 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e950 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e960 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e970 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e980 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e990 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e9a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1e9b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1e9c0 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28  lite3_blob_read(
1e9d0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1e9e0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1e9f0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1ea00 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1ea10 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1ea20 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1ea30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ea40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ea50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ea60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ea70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ea80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ea90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1eaa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eab0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1eac0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ead0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1eae0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1eaf0 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49  e3_blob_reopen(I
1eb00 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67  ntPtr blob, long
1eb10 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20   rowId);....#if 
1eb20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1eb30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1eb40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1eb50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1eb60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1eb70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1eb80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1eb90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eba0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ebb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ebc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ebd0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1ebe0 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28  ite3_blob_write(
1ebf0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1ec00 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1ec10 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1ec20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1ec30 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1ec40 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1ec50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ec60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ec70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ec80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ec90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1eca0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ecb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ecc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ecd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ece0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ecf0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1ed00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1ed10 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
1ed20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1ed30 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20  r zSQL);....#if 
1ed40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ed50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ed60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ed70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ed80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ed90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1eda0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1edb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1edc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1edd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ede0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1edf0 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  Ptr sqlite3_mpri
1ee00 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61  ntf(IntPtr forma
1ee10 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a  t, __arglist);..
1ee20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1ee30 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20  ..    // SQLite 
1ee40 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61  API calls that a
1ee50 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22  re provided by "
1ee60 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65  well-known" exte
1ee70 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20  nsions that may 
1ee80 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20  be statically.. 
1ee90 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74     // linked wit
1eea0 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1eeb0 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
1eec0 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
1eed0 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  e...    #region 
1eee0 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65  extension sqlite
1eef0 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20   api calls..#if 
1ef00 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
1ef10 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54  TABLE..#if !PLAT
1ef20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ef30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ef40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ef50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ef60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ef70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ef80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ef90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1efa0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1efb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1efc0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1efd0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
1efe0 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28  sposable_module(
1eff0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1f000 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69  r name, ref sqli
1f010 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c  te3_module modul
1f020 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  e, IntPtr pClien
1f030 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d  tData, xDestroyM
1f040 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b  odule xDestroy);
1f050 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f060 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f070 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f080 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f0a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f0b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f0c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f0d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f0e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f0f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f100 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1f110 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
1f120 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29  (IntPtr pModule)
1f130 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
1f140 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f1a0 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69      #region sqli
1f1b0 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63  te interop api c
1f1c0 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61  alls (.NET Compa
1f1d0 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c  ct Framework onl
1f1e0 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  y)..#if PLATFORM
1f1f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f200 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
1f210 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49  NDARD..    [DllI
1f220 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f230 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1f240 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1f250 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  oid sqlite3_last
1f260 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e  _insert_rowid_in
1f270 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
1f280 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29   ref long rowId)
1f290 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1f2a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f2b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f2c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1f2d0 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
1f2e0 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65  _used_interop(re
1f2f0 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
1f300 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f310 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1f320 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f330 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f340 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
1f350 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28  ghwater_interop(
1f360 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72  int resetFlag, r
1f370 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
1f380 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1f390 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f3a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f3b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f3c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f3d0 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69  e3_bind_double_i
1f3e0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1f3f0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1f400 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
1f410 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1f420 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f430 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f440 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1f450 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1f460 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
1f470 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1f480 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1f490 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
1f4a0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1f4b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1f4c0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1f4d0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
1f4e0 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20  interop")]..    
1f4f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f500 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f510 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1f520 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72  ind_uint64_inter
1f530 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1f540 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75  int index, ref u
1f550 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
1f560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f570 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1f580 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f590 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1f5a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
1f5b0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
1f5c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1f5d0 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
1f5e0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1f5f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f600 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1f610 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f620 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
1f630 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72  lumn_int64_inter
1f640 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1f650 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
1f660 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
1f670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f680 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1f690 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f6a0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1f6b0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
1f6c0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1f6d0 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  p, ref double va
1f6e0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1f6f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f700 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1f710 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f720 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
1f730 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
1f740 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
1f750 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
1f760 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f770 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1f780 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f790 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1f7a0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
1f7b0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
1f7c0 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
1f7d0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
1f7e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f7f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1f800 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f810 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f820 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
1f830 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
1f840 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
1f850 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
1f860 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f870 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1f880 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f890 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1f8a0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
1f8b0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
1f8c0 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20  _interop(..     
1f8d0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e     IntPtr db, In
1f8e0 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74  tPtr name, IntPt
1f8f0 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69  r pModule, int i
1f900 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65  Version, xCreate
1f910 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20   xCreate,..     
1f920 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e     xConnect xCon
1f930 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78  nect, xBestIndex
1f940 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69   xBestIndex, xDi
1f950 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
1f960 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  nect,..        x
1f970 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
1f980 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78  , xOpen xOpen, x
1f990 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46  Close xClose, xF
1f9a0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a  ilter xFilter,..
1f9b0 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e          xNext xN
1f9c0 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20  ext, xEof xEof, 
1f9d0 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c  xColumn xColumn,
1f9e0 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20   xRowId xRowId, 
1f9f0 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c  xUpdate xUpdate,
1fa00 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e  ..        xBegin
1fa10 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78   xBegin, xSync x
1fa20 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43  Sync, xCommit xC
1fa30 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b  ommit, xRollback
1fa40 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20   xRollback,..   
1fa50 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
1fa60 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
1fa70 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  , xRename xRenam
1fa80 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  e, xSavepoint xS
1fa90 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20  avepoint,..     
1faa0 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c     xRelease xRel
1fab0 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54  ease, xRollbackT
1fac0 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  o xRollbackTo, I
1fad0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
1fae0 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  a,..        xDes
1faf0 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
1fb00 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  royModule);..#en
1fb10 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54  dif..    // PLAT
1fb20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fb30 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
1fb40 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23  _STANDARD..    #
1fb50 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1fb60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1fbb0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
1fbc0 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69  ve Delegates..#i
1fbd0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
1fbe0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
1fbf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fc00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1fc10 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1fc20 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1fc30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fc40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1fc50 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1fc60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
1fc70 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
1fc80 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
1fc90 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
1fca0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1fcb0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1fcc0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1fcd0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1fce0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
1fcf0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
1fd00 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1fd60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fd70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fd80 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1fd90 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1fda0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1fdb0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1fdc0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1fdd0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1fde0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
1fdf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
1fe00 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
1fe10 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
1fe20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
1fe30 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1fe40 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
1fe50 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
1fe60 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1fe70 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
1fe80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1fe90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1feb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fed0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1fee0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fef0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1ff00 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1ff10 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1ff20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ff30 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1ff40 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1ff50 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
1ff60 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
1ff70 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1ff80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
1ff90 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
1ffa0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1fff0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20000 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20010 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
20020 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
20030 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
20040 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
20050 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
20060 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
20070 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
20080 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
20090 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
200a0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
200b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
20100 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20110 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
20120 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
20130 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
20140 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20150 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
20160 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
20170 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
20180 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
20190 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
201a0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
201b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
20200 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20210 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20220 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
20230 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
20240 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20250 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
20260 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
20270 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20280 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
20290 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
202a0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
202b0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
202c0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
202d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20310 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
20320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
20340 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
20350 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
20360 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20370 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
20380 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
20390 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
203a0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  lose(..        I
203b0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
203c0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
203d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20410 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
20420 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20430 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20440 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
20450 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
20460 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20470 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
20480 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
20490 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
204a0 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20   xFilter(..     
204b0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
204c0 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
204d0 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
204e0 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
204f0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
20500 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
20510 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d  tr argv..    );.
20520 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
20530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20570 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
20580 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20590 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
205a0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
205b0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
205c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
205d0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
205e0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
205f0 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
20600 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
20610 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
20620 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
20630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20670 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
20680 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20690 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
206a0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
206b0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
206c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
206d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
206e0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
206f0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
20700 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
20710 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
20720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20760 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
20770 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20780 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20790 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
207a0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
207b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
207c0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
207d0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
207e0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
207f0 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  e xColumn(..    
20800 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
20810 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  or,..        Int
20820 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
20830 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
20840 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
20850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
208a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
208b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
208c0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
208d0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
208e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
208f0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
20900 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
20910 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
20920 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
20930 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
20940 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  sor,..        re
20950 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
20960 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
20970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
209c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
209d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
209e0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
209f0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
20a00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20a10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20a20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
20a30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20a40 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
20a50 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
20a60 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
20a70 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
20a80 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
20a90 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
20aa0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
20ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
20b00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20b10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20b20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
20b30 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
20b40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20b50 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
20b60 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
20b70 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
20b80 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
20b90 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
20ba0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
20bb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20c00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20c10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20c20 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
20c30 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
20c40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20c50 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
20c60 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
20c70 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
20c80 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20  Code xSync(..   
20c90 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
20ca0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
20cb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20d00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20d10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20d20 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
20d30 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
20d40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20d50 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
20d60 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
20d70 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
20d80 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
20d90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
20da0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
20db0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20e00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20e10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20e20 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
20e30 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
20e40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20e50 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
20e60 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
20e70 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
20e80 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
20e90 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
20ea0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
20eb0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f00 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
20f10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20f20 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
20f30 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
20f40 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
20f50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20f60 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
20f70 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
20f80 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
20f90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
20fa0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
20fb0 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
20fc0 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
20fd0 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
20fe0 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
20ff0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ack,..        re
21000 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61  f IntPtr pUserDa
21010 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ta..    );....  
21020 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
21030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21070 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21080 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21090 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
210a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
210b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
210c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
210d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
210e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
210f0 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
21100 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
21110 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
21120 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
21130 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
21140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21180 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
21190 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
211a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
211b0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
211c0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
211d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
211e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
211f0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
21200 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
21210 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
21220 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
21230 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
21240 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
21250 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
21260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
212b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
212c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
212d0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
212e0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
212f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21300 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
21310 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
21320 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c  teErrorCode xRel
21330 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  ease(..        I
21340 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
21350 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
21360 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
21370 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
213c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
213d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
213e0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
213f0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
21400 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
21410 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
21420 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
21430 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
21440 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
21450 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  kTo(..        In
21460 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
21470 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
21480 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
21490 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
214a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
214e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
214f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21500 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
21510 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
21520 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21530 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
21540 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
21550 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
21560 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
21570 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
21580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
21590 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
215a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
215f0 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
21600 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66   Structures..#if
21610 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
21620 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72  _TABLE..    [Str
21630 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
21640 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
21650 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
21660 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
21670 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
21680 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
21690 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20   iVersion;..    
216a0 20 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61      public xCrea
216b0 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20  te xCreate;..   
216c0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e       public xCon
216d0 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a  nect xConnect;..
216e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
216f0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
21700 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70  ndex;..        p
21710 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63  ublic xDisconnec
21720 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a  t xDisconnect;..
21730 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
21740 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
21750 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
21760 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a  c xOpen xOpen;..
21770 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
21780 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20  Close xClose;.. 
21790 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
217a0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a  ilter xFilter;..
217b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
217c0 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20  Next xNext;..   
217d0 20 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66       public xEof
217e0 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20   xEof;..        
217f0 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
21800 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
21810 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78   public xRowId x
21820 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20  RowId;..        
21830 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
21840 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
21850 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78   public xBegin x
21860 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20  Begin;..        
21870 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79  public xSync xSy
21880 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nc;..        pub
21890 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  lic xCommit xCom
218a0 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  mit;..        pu
218b0 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78  blic xRollback x
218c0 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20  Rollback;..     
218d0 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46     public xFindF
218e0 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
218f0 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  ction;..        
21900 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
21910 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
21920 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
21930 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
21940 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
21950 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
21960 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
21970 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
21980 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
21990 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
219a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
219b0 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
219c0 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  point;..        
219d0 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
219e0 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
219f0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
21a00 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
21a10 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  o;..    }....   
21a20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21a70 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
21a80 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
21a90 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
21aa0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
21ab0 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20  qlite3_vtab..   
21ac0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
21ad0 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  ic IntPtr pModul
21ae0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
21af0 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
21b00 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
21b10 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
21b20 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
21b30 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
21b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21b90 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
21ba0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
21bb0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
21bc0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
21bd0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
21be0 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
21bf0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
21c00 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  pVTab;..    }...
21c10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
21c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c60 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
21c70 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
21c80 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
21c90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
21ca0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
21cb0 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  _constraint..   
21cc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
21cd0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
21ce0 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  _constraint(..  
21cf0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
21d00 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20  IndexConstraint 
21d10 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
21d20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
21d30 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
21d40 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
21d50 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
21d60 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  traint != null).
21d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
21d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d90 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72  iColumn = constr
21da0 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  aint.iColumn;.. 
21db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
21dc0 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  p = constraint.o
21dd0 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
21de0 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e      usable = con
21df0 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d  straint.usable;.
21e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e10 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63   iTermOffset = c
21e20 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
21e30 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
21e40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
21e50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ea0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
21eb0 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
21ec0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
21ed0 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
21ee0 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
21ef0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
21f00 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
21f10 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
21f20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
21f30 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
21f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
21f90 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
21fa0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
21fb0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
21fc0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
21fd0 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a  _index_orderby..
21fe0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
21ff0 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
22000 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20  dex_orderby(..  
22010 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
22020 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64  IndexOrderBy ord
22030 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
22040 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
22050 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
22060 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22070 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d    if (orderBy !=
22080 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
22090 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
220a0 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
220b0 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e   orderBy.iColumn
220c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
220d0 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42     desc = orderB
220e0 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  y.desc;..       
220f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22100 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
22110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22150 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22160 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
22170 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
22180 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
22190 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
221a0 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
221b0 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
221c0 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d  r ASC. */..    }
221d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
221e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22220 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
22230 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
22240 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
22250 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22260 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
22270 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
22280 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sage..    {..   
22290 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
222a0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
222b0 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
222c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
222d0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
222e0 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
222f0 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
22300 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
22310 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
22320 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22330 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
22340 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sage != null).. 
22350 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
22370 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72  gvIndex = constr
22380 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e  aintUsage.argvIn
22390 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
223a0 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e        omit = con
223b0 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
223c0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
223d0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
223e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
223f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22430 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
22440 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
22450 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74   /* if >0, const
22460 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
22470 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
22480 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
22490 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20  lic byte omit;  
224a0 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
224b0 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
224c0 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d  s constraint */.
224d0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
224e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22520 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22530 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
22540 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
22550 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
22560 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
22570 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
22580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
22590 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
225a0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
225b0 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20  nConstraint; /* 
225c0 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
225d0 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  s in aConstraint
225e0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
225f0 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
22600 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  traint;..       
22610 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64   public int nOrd
22620 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62  erBy;    /* Numb
22630 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
22640 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20   aOrderBy */..  
22650 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
22660 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
22670 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
22680 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
22690 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
226a0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
226b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
226c0 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
226d0 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
226e0 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
226f0 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
22700 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
22710 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
22720 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
22730 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
22740 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
22750 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
22760 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
22770 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
22780 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
22790 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
227a0 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
227b0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
227c0 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
227d0 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
227e0 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
227f0 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
22800 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
22810 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
22820 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
22830 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
22840 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
22850 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
22860 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
22870 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
22880 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
22890 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
228a0 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
228b0 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b  xFlags idxFlags;
228c0 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49   /* Mask of SQLI
228d0 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20  TE_INDEX_SCAN_* 
228e0 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20  flags */..      
228f0 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f    public long co
22900 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f  lUsed;         /
22910 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66  * Input: Mask of
22920 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79   columns used by
22930 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20   statement */.. 
22940 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
22950 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
22960 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
22970 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
22980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229c0 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
229d0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
229e0 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72  mework (only) Cr
229f0 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61  iticalHandle Cla
22a00 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ss..#if PLATFORM
22a10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22a20 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  K..  internal ab
22a30 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69  stract class Cri
22a40 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44  ticalHandle : ID
22a50 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
22a60 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
22a70 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20   _isClosed;..   
22a80 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74   protected IntPt
22a90 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  r handle;....   
22aa0 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
22ab0 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
22ac0 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
22ad0 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
22ae0 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
22af0 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
22b00 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
22b10 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
22b20 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
22b30 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
22b40 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
22b50 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
22b60 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
22b70 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
22b80 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
22b90 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
22ba0 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
22bb0 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
22bc0 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
22bd0 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
22be0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22bf0 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
22c00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
22c10 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
22c20 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
22c30 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
22c40 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
22c50 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
22c60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
22c70 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
22c80 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
22c90 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
22ca0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
22cb0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
22cc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
22cd0 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
22ce0 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
22cf0 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
22d00 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
22d10 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
22d20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
22d30 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
22d40 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
22d50 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
22d60 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
22d70 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
22d80 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
22d90 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
22da0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
22db0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
22dc0 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
22dd0 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
22de0 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
22df0 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
22e00 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
22e10 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
22e20 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
22e30 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
22e40 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
22e50 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
22e60 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
22e70 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
22e80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
22e90 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
22ea0 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
22eb0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
22ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22f10 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
22f20 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43  nnectionHandle C
22f30 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e  lass..    // Han
22f40 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67  dles the unmanag
22f50 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e  ed database poin
22f60 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65  ter, and provide
22f70 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a  s finalization..
22f80 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66      // support f
22f90 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65  or it...    inte
22fa0 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
22fb0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
22fc0 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  onHandle : Criti
22fd0 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
22fe0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
22ff0 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f  NDARD && !PLATFO
23000 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23010 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
23020 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76  ernal delegate v
23030 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
23040 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  ionCallback(..  
23050 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
23060 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
23070 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29   hdl, IntPtr db)
23080 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
23090 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f  ernal static Clo
230a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
230b0 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63  back closeConnec
230c0 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
230d0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
230e0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d  loseConnection;.
230f0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
23100 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
23150 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
23160 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
23170 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
23180 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
23190 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
231a0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
231b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
231c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23200 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
23210 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e  vate bool ownHan
23220 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dle;....        
23230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23270 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23280 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23290 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
232a0 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
232b0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
232c0 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d   db)..        {.
232d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
232e0 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  (db != null)..  
232f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
23300 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
23310 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23320 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23330 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a   (db.syncRoot)..
23340 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23350 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23370 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
23380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23390 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
233a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
233b0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
233c0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
233d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
233e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23420 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
23430 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e  ernal SQLiteConn
23440 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
23450 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e  Ptr db, bool own
23460 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
23470 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48       : this(ownH
23480 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
23490 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
234a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
234b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
234c0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
234d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
234e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
234f0 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61        this.ownHa
23500 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65  ndle = ownHandle
23510 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23520 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
23530 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
23540 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
23550 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
235a0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
235b0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
235c0 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77  onHandle(bool ow
235d0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
235e0 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
235f0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
23600 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
23610 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
23620 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c      if (ownHandl
23630 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
23640 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
23650 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
23660 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
23670 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
23680 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
23690 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
236a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
236e0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
236f0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
23700 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
23710 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
23720 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
23730 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23740 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
23750 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
23760 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
23770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23780 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
23790 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
237a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
237b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
237c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
237d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
237e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
237f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23800 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
23810 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
23820 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
23830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23840 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
23850 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
23860 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
23870 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
23880 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
23890 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
238a0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
238b0 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
238c0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
238d0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
238e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
238f0 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
23900 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
23910 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
23920 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
23930 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
23940 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
23950 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
23960 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
23970 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
23980 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
23990 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
239a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
239b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239c0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
239d0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
239e0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
239f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a00 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
23a10 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
23a20 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
23a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
23a40 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
23a50 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
23a60 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
23a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23a80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
23a90 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
23aa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23ac0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
23ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23ae0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
23af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23b10 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
23b20 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
23b30 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
23b40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b60 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
23b70 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
23b80 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
23b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ba0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
23bb0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
23bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bd0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
23be0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
23bf0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
23c00 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
23c10 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
23c20 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
23c30 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
23c40 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
23c50 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
23c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
23c70 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
23c80 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
23c90 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
23ca0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
23cb0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
23cc0 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
23cd0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
23ce0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
23cf0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
23d00 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
23d10 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
23d20 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
23d30 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
23d40 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
23d50 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
23d60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d80 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
23d90 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
23da0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
23db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dc0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
23dd0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
23de0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
23df0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
23e00 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
23e10 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
23e20 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
23e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
23e40 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
23e50 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
23e60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23e70 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
23e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23ea0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
23eb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
23ec0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
23ed0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
23ee0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
23ef0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23f10 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
23f20 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
23f30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f50 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
23f60 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
23f70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23f80 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
23f90 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
23fa0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
23fb0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
23fc0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
23fd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
23fe0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
23ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24030 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
24040 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
24050 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
24060 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
24070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24080 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
24090 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
240a0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
240b0 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
240c0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
240d0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
240e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24120 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24130 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
24140 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20   OwnHandle..    
24150 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24160 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
24170 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
24180 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24190 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
241a0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
241b0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
241c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
241d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
241e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e        return own
241f0 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
24200 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24210 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24220 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24270 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
24280 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
24290 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
242a0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
242b0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
242c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
242d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
242e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
242f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
24300 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
24310 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
24320 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24340 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
24350 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
24360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24370 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24380 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
24390 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
243a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
243e0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
243f0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
24400 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
24410 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
24420 0a 23 69 66 20 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 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
24450 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
24460 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
24470 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24480 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
24490 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
244a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
244b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
244c0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
244d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
244e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24520 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24530 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
24540 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43  tatementHandle C
24550 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
24560 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
24570 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
24580 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
24590 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20  statements...   
245a0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
245b0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61   class SQLiteSta
245c0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43  tementHandle : C
245d0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
245e0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
245f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24600 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
24610 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
24620 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
24630 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
24640 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
24650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
24660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24690 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
246a0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
246b0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
246c0 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
246d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
246e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24720 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
24730 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
24740 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
24750 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
24760 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  dle stmt)..     
24770 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24780 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75    if (stmt != nu
24790 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
247a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
247b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
247c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
247d0 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79     lock (stmt.sy
247e0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
247f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24800 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24810 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
24820 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  tmt.handle;..   
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24840 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24850 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
24860 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
24870 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
24880 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
248d0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
248e0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
248f0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
24900 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
24910 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d  n, IntPtr stmt).
24920 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
24930 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
24940 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
24950 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24960 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
24970 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
24980 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
24990 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
249a0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
249b0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
249c0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
249d0 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  stmt);..        
249e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
249f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
24a50 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61  rivate SQLiteSta
24a60 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a  tementHandle()..
24a70 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
24a80 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
24a90 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
24aa0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
24ab0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
24ac0 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
24ad0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
24ae0 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
24af0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
24b00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
24b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24b60 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
24b70 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
24b80 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
24b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24ba0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
24bb0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
24bc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24bd0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
24be0 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
24bf0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
24c00 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
24c30 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
24c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24c50 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
24c60 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
24c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24c80 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
24c90 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
24ca0 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
24cb0 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
24cc0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
24cd0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
24ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
24cf0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
24d00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24d10 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
24d20 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
24d30 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
24d40 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
24d60 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
24d70 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
24d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d90 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
24da0 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
24db0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
24dc0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
24dd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24de0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
24df0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
24e00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24e10 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
24e20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
24e30 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
24e40 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
24e50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e70 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
24e80 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
24e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ea0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
24ec0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
24ed0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
24ee0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f00 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
24f10 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
24f20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f40 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
24f50 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
24f60 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
24f70 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
24f80 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
24f90 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
24fa0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
24fb0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
24fc0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
24fd0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
24fe0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
24ff0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
25000 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
25010 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
25020 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
25030 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
25040 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
25050 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
25060 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
25070 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
25080 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
25090 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
250a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
250b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
250c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
250d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
250e0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
250f0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
25100 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25120 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
25130 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25150 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
25160 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
25170 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
25180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25190 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
251a0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
251b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
251c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
251d0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
251e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
251f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
25210 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25220 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
25230 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
25240 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
25250 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25260 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
25270 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
25280 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
25290 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
252a0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
252b0 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
252c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
252d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
252e0 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
252f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25300 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
25310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
25320 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
25330 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
25340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25390 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
253a0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
253b0 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
253c0 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
253d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
253e0 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
253f0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
25400 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
25410 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
25420 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
25430 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25480 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
25490 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
254a0 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
254b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
254c0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
254d0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
254e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
254f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
25500 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
25510 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
25520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25530 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25540 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
25550 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
25560 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
25570 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25580 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25590 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
255a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
255f0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
25600 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
25610 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
25620 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
25630 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25640 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
25650 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
25660 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
25670 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25690 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
256a0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
256b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
256c0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
256d0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
256e0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
256f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
25740 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
25750 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
25760 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
25770 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
25780 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
25790 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
257a0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
257b0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
257c0 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
257d0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
257e0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
257f0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
25800 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25810 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
25820 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
25830 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
25840 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
25850 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
258b0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
258c0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
258d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
258e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25920 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25930 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
25940 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
25950 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
25960 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
25970 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
25980 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
25990 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
259a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
259b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
259c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
259d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
259e0 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
259f0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
25a00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
25a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
25a30 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
25a40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
25a50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25a60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25a70 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
25a80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25a90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25ae0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
25af0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
25b00 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
25b10 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
25b20 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
25b30 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
25b40 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
25b50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
25b60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25b70 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
25b80 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
25b90 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
25ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25bb0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
25bc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
25bd0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
25be0 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
25bf0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
25c00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
25c60 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
25c70 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
25c80 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
25c90 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
25ca0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
25cb0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
25cc0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
25cd0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
25ce0 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
25cf0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
25d00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
25d10 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
25d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25d60 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
25d70 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
25d80 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
25d90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
25da0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
25db0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
25dc0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25dd0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25de0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
25df0 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
25e00 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
25e10 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
25e20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
25e30 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
25e40 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
25e50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
25e60 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
25e70 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
25e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
25e90 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
25ea0 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61  Backup(cnn, loca
25eb0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
25ec0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
25ed0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
25ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ef0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
25f00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
25f20 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
25f30 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
25f40 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
25f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f60 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
25f70 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
25f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f90 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
25fa0 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
25fb0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
25fc0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
25fd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25fe0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
25ff0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
26000 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26010 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
26020 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
26030 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
26040 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
26050 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
26060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26070 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
26080 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
26090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
260b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
260c0 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
260d0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
260e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
260f0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
26100 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
26110 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26120 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
26130 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
26140 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
26150 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26160 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
26170 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
26180 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
26190 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
261a0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
261b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
261c0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
261d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
261e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
261f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
26200 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26210 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
26220 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
26230 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
26240 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
26250 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
26260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26270 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
26280 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
26290 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
262a0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
262b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
262c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262d0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
262e0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
262f0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
26300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26310 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
26320 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
26330 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
26340 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
26350 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
26360 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
26370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26380 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
26390 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
263a0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
263b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
263c0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
263d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
263e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
263f0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
26400 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
26410 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
26420 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
26430 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
26440 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
26460 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
26470 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
26480 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
264a0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
264b0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
264c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
264d0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
264e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
264f0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
26500 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
26510 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
26520 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
26530 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
26540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26580 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
26590 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
265a0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
265b0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
265c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
265d0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
265e0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
265f0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
26600 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
26610 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
26620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26670 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
26680 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
26690 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
266a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
266b0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
266c0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
266d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
266e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
266f0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
26700 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26720 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26730 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
26740 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
26750 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
26760 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
26770 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
26780 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
26790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
267e0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
267f0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
26800 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
26810 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
26820 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26830 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
26840 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
26850 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
26860 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26880 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
26890 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
268a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
268b0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
268c0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
268d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26920 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
26930 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  on SQLiteBlobHan
26940 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
26950 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
26960 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
26970 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
26980 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74  Lite blob object
26990 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
269a0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
269b0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a  LiteBlobHandle :
269c0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
269d0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
269e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
269f0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
26a00 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
26a10 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
26a20 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
26a30 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
26a40 20 20 20 20 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 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26a90 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
26aa0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
26ab0 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
26ac0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
26ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26b10 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26b20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
26b30 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
26b40 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
26b50 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20   blob)..        
26b60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
26b70 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29  f (blob != null)
26b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26b90 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
26ba0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bc0 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52  lock (blob.syncR
26bd0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
26be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
26bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26c00 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62       return blob
26c10 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
26c20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
26c30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26c40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
26c50 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
26c60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26c70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26cc0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
26cd0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53  LiteBlobHandle(S
26ce0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
26cf0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
26d00 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20  r blob)..       
26d10 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
26d20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
26d30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26d40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
26d50 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
26d60 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
26d70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26d80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
26d90 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
26da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
26db0 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a  tHandle(blob);..
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26dd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
26de0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26e30 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
26e40 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28  QLiteBlobHandle(
26e50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
26e60 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
26e70 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
26e80 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
26e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
26ea0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
26eb0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
26ec0 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65  .blobCount);..#e
26ed0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
26ee0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
26ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
26f40 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
26f50 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
26f60 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
26f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
26f80 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
26f90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26fa0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26fc0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
26fd0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
26fe0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27000 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
27010 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27030 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
27040 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
27050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27060 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
27070 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f  loseBlob(cnn, lo
27080 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
27090 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
270a0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
270b0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
270c0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
270d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
270e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270f0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
27100 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
27110 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
27120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27130 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
27140 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
27150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27160 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
27170 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  Blob: {0}", loca
27180 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
27190 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
271a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
271b0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
271c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
271d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
271e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
271f0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
27200 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
27210 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
27220 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27240 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
27250 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
27260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
27270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27280 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
27290 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
272a0 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
272b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272c0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
272d0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
27300 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
27310 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
27320 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
27330 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
27340 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
27350 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
27360 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
27370 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
27380 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
27390 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
273a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
273b0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
273c0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
273d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
273e0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
273f0 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
27400 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
27410 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
27420 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
27430 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
27440 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
27450 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
27460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27470 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
27480 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27490 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
274a0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
274b0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
274c0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
274d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274e0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
274f0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
27500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27510 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62        "CloseBlob
27520 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
27530 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
27540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27550 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
27560 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
27570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
27580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
27590 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
275a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
275b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
275c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
275d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
275e0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
275f0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
27600 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27610 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
27620 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
27630 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
27640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27660 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
27670 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
27680 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27690 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
276a0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
276b0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
276c0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
276d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
276e0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
276f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27700 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27740 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27750 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
27760 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
27770 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
27780 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
27790 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
277a0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
277b0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
277c0 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
277d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
277e0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
277f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27830 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
27840 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
27850 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
27860 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
27870 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
27880 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
27890 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
278a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
278b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
278c0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
278d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
278e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
278f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27900 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
27910 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
27920 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
27930 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27940 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27950 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
279a0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
279b0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
279c0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
279d0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
279e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
279f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27a00 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
27a10 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
27a20 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
27a30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27a40 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
27a50 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
27a60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
27a70 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
27a80 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
27a90 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..