System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9d4422b95b07e74ba9178cf11cea35bce2f12b45:


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 54 68 69 73 20 69 73 20      /// This is 
6090: 74 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72  the cached retur
60a0: 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  n value from the
60b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
60c0: 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e   cref="GetXmlCon
60d0: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
60e0: 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c  method -OR- null
60f0: 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d   if that method.
6100: 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e  .      /// has n
6110: 65 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20  ever returned a 
6120: 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20  valid value...  
6130: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6140: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
6150: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
6160: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
6170: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
6180: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6190: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
61a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
61e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
61f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
6200: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
6210: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
6220: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
6230: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
6240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6250: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
6260: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
6270: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
6280: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
6290: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
62a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
62b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
62f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6300: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
6310: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
6320: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
6330: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
6340: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
6350: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
6360: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
6370: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
6380: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
6390: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
63a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
63b0: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
63c0: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
63d0: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
63e0: 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
63f0: 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
6400: 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
6410: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6420: 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52  RAMEWORK..#if PR
6430: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
6440: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20  RARY..          
6450: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
6460: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e   NOTE: If the "N
6470: 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22  o_PreLoadSQLite"
6480: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
6490: 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
64a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
64b0: 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20       anything), 
64c0: 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70 65  skip all our spe
64d0: 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69  cial code and si
64e0: 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20  mply return...  
64f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6500: 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
6510: 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72  tingValue("No_Pr
6520: 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75  eLoadSQLite", nu
6530: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
6540: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6550: 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  rn;..#endif..#en
6560: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
6570: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
6580: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
6590: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
65a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
65b0: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
65c0: 65 20 6c 69 73 74 73 20 6f 66 20 73 74 61 74 69  e lists of stati
65d0: 73 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 20  stics that will 
65e0: 63 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20  contain..       
65f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
6600: 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20  ous counts used 
6610: 69 6e 20 64 65 62 75 67 67 69 6e 67 2c 20 69 6e  in debugging, in
6620: 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a 20 20 20  cluding the..   
6630: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6640: 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20  number of times 
6650: 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c  each setting val
6660: 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61 64  ue has been read
6670: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
6680: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
6690: 44 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28  Data.Initialize(
66a0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
66b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
66c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
66d0: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
66e0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
66f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6700: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
6710: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
6720: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
6730: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
6740: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
6750: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6760: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
6770: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
6780: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
6790: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
67a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
67b0: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
67c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
67d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
67e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
67f0: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
6800: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6810: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6820: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6840: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
6850: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
6860: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
6870: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
6880: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6890: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
68a0: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
68b0: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
68c0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
68d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
68e0: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
6900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6910: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
6920: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
6930: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
6940: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
6950: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
6960: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
6990: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
69a0: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
69b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
69c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
69d0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
69e0: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
69f0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
6a00: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
6a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a20: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
6a30: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
6a40: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
6a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6a60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6a70: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
6a80: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
6a90: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
6aa0: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
6ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ac0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6ad0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
6ae0: 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36  Add("AMD64", "x6
6af0: 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4");..          
6b00: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
6b10: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
6b20: 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34  tforms.Add("IA64
6b30: 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a  ", "Itanium");..
6b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b50: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
6b60: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
6b70: 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e  .Add("ARM", "Win
6b80: 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  CE");..         
6b90: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51       }....#if SQ
6ba0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
6bb0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
6bc0: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
6bd0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
6be0: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
6bf0: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
6c00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6c10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
6c20: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
6c30: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
6c40: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
6c50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
6c70: 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  (_SQLiteNativeMo
6c80: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e  duleHandle == In
6c90: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
6ca0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6cc0: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
6cd0: 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6cf0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
6d00: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75  rchitecture = nu
6d10: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
6d20: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
6d30: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
6d40: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
6d50: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
6d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d70: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
6d80: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
6d90: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
6da0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
6db0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6dd0: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
6de0: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
6df0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
6e00: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
6e10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
6e20: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
6e30: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
6e40: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
6e50: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
6e60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
6e70: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
6e80: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
6e90: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
6ea0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ec0: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
6ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ee0: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
6ef0: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
6f00: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
6f10: 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65  Directory, proce
6f20: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
6f30: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6f40: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
6f50: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
6f60: 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f80: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
6f90: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b  veModuleHandle);
6fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6fb0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
6fc0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
6fd0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
6fe0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
7030: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7040: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69  .      /// Combi
7050: 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74 72  nes two path str
7060: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
7070: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7080: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7090: 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20  me="path1">..   
70a0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74     /// The first
70b0: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
70c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
70d0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
70e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
70f0: 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h2">..      /// 
7100: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20  The second path 
7110: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
7120: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7130: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
7140: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7150: 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68  he combined path
7160: 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c   string -OR- nul
7170: 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65  l if both of the
7180: 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a   original path..
7190: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
71a0: 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  s are null...   
71b0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
71c0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
71d0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d   static string M
71e0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
71f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7200: 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20  ng path1,..     
7210: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
7220: 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  2..          )..
7230: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7240: 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d 20     if (path1 != 
7250: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
7260: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7270: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
7280: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7290: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
72a0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68  ath.Combine(path
72b0: 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20  1, path2);..    
72c0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72e0: 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d    return path1;.
72f0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
7300: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
7310: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7320: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
7330: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7350: 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20  eturn path2;..  
7360: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
7370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7380: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
7390: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
73a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7400: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7410: 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73        /// Resets
7420: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
7430: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
7440: 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 2c 20 74  le name value, t
7450: 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65 0d  hus forcing the.
7460: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20  .      /// next 
7470: 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72 65  call to <see cre
7480: 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43  f="GetCachedXmlC
7490: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
74a0: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c 79  > method to rely
74b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e  ..      /// upon
74c0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
74d0: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
74e0: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
74f0: 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20 20  to fetch the..  
7500: 20 20 20 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e 66      /// XML conf
7510: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
7520: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
7530: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7540: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7550: 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68 65   void ResetCache
7560: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7570: 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  me()..      {.. 
7580: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
7590: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
75a0: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
75b0: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
75c0: 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  a.IncrementOther
75d0: 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65  Count("Method_Re
75e0: 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  setCachedXmlConf
75f0: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
7600: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
7610: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7620: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
7630: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
7640: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7650: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
7660: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7670: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
7680: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
7690: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
76f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7700: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
7710: 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68  returns the cach
7720: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
7730: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66  tion file name f
7740: 6f 72 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  or the..      //
7750: 2f 20 61 73 73 65 6d 62 6c 79 20 63 6f 6e 74 61  / assembly conta
7760: 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65  ining the manage
7770: 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  d System.Data.SQ
7780: 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c  Lite components,
7790: 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   if..      /// a
77a0: 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74 68  vailable.  If th
77b0: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
77c0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
77d0: 6e 61 6d 65 20 76 61 6c 75 65 20 69 73 20 6e 6f  name value is no
77e0: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76 61  t..      /// ava
77f0: 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c 73 65 65  ilable, the <see
7800: 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e   cref="GetXmlCon
7810: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
7820: 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20  method will..   
7830: 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 74     /// be used t
7840: 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 58 4d 4c  o obtain the XML
7850: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
7860: 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ile name...     
7870: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7880: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
7890: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
78a0: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
78b0: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
78c0: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
78d0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
78e0: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
78f0: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
7900: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
7910: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7920: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
7930: 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64 58  tring GetCachedX
7940: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
7950: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
7960: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
7970: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
7980: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
7990: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
79a0: 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
79b0: 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43  unt("Method_GetC
79c0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
79d0: 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69  leName");..#endi
79e0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
79f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
7a00: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
7a10: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
7a20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7a30: 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68 65         if (cache
7a40: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7a50: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
7a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7a70: 65 74 75 72 6e 20 63 61 63 68 65 64 58 6d 6c 43  eturn cachedXmlC
7a80: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a  onfigFileName;..
7a90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7aa0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7ab0: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
7ac0: 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d  Name();..      }
7ad0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b20: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
7b30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7b40: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
7b50: 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20  returns the XML 
7b60: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
7b70: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
7b80: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
7b90: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
7ba0: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
7bb0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
7bc0: 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20  mponents...     
7bd0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7be0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
7bf0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
7c00: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
7c10: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
7c20: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
7c30: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
7c40: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
7c50: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
7c60: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
7c70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7c80: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
7c90: 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66  tring GetXmlConf
7ca0: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
7cb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7cc0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
7cd0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
7ce0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
7cf0: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
7d00: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
7d10: 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66  ethod_GetXmlConf
7d20: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
7d30: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
7d40: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7d50: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
7d60: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
7d70: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7d80: 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  eName;....#if !P
7d90: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7da0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
7db0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
7dc0: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
7dd0: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
7de0: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
7df0: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79    fileName = May
7e00: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
7e10: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
7e20: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
7e30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
7e40: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
7e50: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
7e60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7e70: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
7e80: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
7e90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7ea0: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
7eb0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7ec0: 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  me = fileName;..
7ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7ee0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7ef0: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
7f00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
7f10: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
7f20: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
7f30: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
7f40: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20  yDirectory();.. 
7f50: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
7f60: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
7f70: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
7f80: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
7f90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
7fa0: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
7fb0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
7fc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7fd0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
7fe0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8010: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
8020: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  gFileName = file
8030: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
8040: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8050: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8060: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
8070: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8080: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
8090: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
80a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
80b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
80f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8100: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66  y>..      /// If
8110: 20 6e 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c   necessary, repl
8120: 61 63 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74  aces all support
8130: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
8140: 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73  tion file tokens
8150: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
8160: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
8170: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
8180: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8190: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
81a0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
81b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
81c0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d  e name of the XM
81d0: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
81e0: 66 69 6c 65 20 62 65 69 6e 67 20 72 65 61 64 2e  file being read.
81f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
8200: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
8210: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
8220: 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ue">..      /// 
8230: 41 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  A setting value 
8240: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d  read from the XM
8250: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
8260: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
8270: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8280: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
8290: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
82a0: 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61  lue of the <para
82b0: 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65  mref name="value
82c0: 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75  " /> will all su
82d0: 70 70 6f 72 74 65 64 20 58 4d 4c 0d 0a 20 20 20  pported XML..   
82e0: 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
82f0: 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73  tion file tokens
8300: 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72   replaced.  No r
8310: 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72  eturn value is r
8320: 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f  eserved..      /
8330: 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61  // to indicate a
8340: 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d  n error.  This m
8350: 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69  ethod cannot fai
8360: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
8370: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8380: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
8390: 74 72 69 6e 67 20 52 65 70 6c 61 63 65 58 6d 6c  tring ReplaceXml
83a0: 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73  ConfigFileTokens
83b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
83c0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20  ing fileName,.. 
83d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
83e0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
83f0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
8400: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
8410: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
8420: 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
8430: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8440: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
8450: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
8460: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
8470: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
8490: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
84a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
84c0: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
84d0: 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
84e0: 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29  ryName(fileName)
84f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8500: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
8510: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
8520: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
8530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8540: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8560: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
8570: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 43 6f             XmlCo
85a0: 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b  nfigDirectoryTok
85b0: 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d  en, directory);.
85c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
85d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
85f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
8600: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
8610: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
8620: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
8630: 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
8640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8650: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
8660: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
8690: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
86a0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
86c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
86d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
86e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86f0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
8700: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
8710: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
8720: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
8730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8740: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
8750: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
8760: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
8770: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
8780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8790: 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
87a0: 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 58  led to replace X
87b0: 4d 4c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ML " +..        
87c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87d0: 20 20 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61        "configura
87e0: 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 30 7d 5c  tion file \"{0}\
87f0: 22 20 74 6f 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d  " tokens: {1}",.
8800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8820: 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ileName, e)); /*
8830: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
8840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8850: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8860: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
8870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8880: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88a0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
88b0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
88c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
88d0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
88e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
88f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8900: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8910: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
8920: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
8930: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8990: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
89a0: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
89b0: 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66  rns the value of
89c0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
89d0: 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68  etting, using th
89e0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  e..      /// spe
89f0: 63 69 66 69 65 64 20 58 4d 4c 20 63 6f 6e 66 69  cified XML confi
8a00: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
8a10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8a20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8a30: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
8a40: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
8a50: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
8a60: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
8a70: 74 69 6f 6e 20 66 69 6c 65 20 74 6f 20 72 65 61  tion file to rea
8a80: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
8a90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
8aa0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
8ab0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
8ac0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
8ad0: 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20   setting...     
8ae0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8af0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8b00: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d  name="default">.
8b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
8b20: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
8b30: 6e 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69  ned if the setti
8b40: 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ng has not been 
8b50: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a  set explicitly..
8b60: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e        /// or can
8b70: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
8b80: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
8b90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
8ba0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
8bb0: 78 70 61 6e 64 22 3e 0d 0a 20 20 20 20 20 20 2f  xpand">..      /
8bc0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65  // Non-zero to e
8bd0: 78 70 61 6e 64 20 61 6e 79 20 65 6e 76 69 72 6f  xpand any enviro
8be0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 72  nment variable r
8bf0: 65 66 65 72 65 6e 63 65 73 20 63 6f 6e 74 61 69  eferences contai
8c00: 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20 20 2f 2f  ned in..      //
8c10: 2f 20 74 68 65 20 73 65 74 74 69 6e 67 20 76 61  / the setting va
8c20: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
8c30: 65 64 2e 20 20 54 68 69 73 20 68 61 73 20 6e 6f  ed.  This has no
8c40: 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e   effect on the .
8c50: 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  NET..      /// C
8c60: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
8c70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
8c80: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
8c90: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8ca0: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
8cb0: 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d  of the setting -
8cc0: 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20  OR- the default 
8cd0: 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20  value specified 
8ce0: 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  by..      /// <p
8cf0: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65  aramref name="de
8d00: 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20  fault" /> if it 
8d10: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74  has not been set
8d20: 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a   explicitly or..
8d30: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
8d40: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
8d50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
8d60: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
8d70: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
8d80: 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ng GetSettingVal
8d90: 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69  ueViaXmlConfigFi
8da0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  le(..          s
8db0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20  tring fileName, 
8dc0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
8dd0: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
8de0: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
8df0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
8e00: 40 64 65 66 61 75 6c 74 2c 20 2f 2a 20 69 6e 20  @default, /* in 
8e10: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  */..          bo
8e20: 6f 6c 20 65 78 70 61 6e 64 20 20 20 20 20 20 2f  ol expand      /
8e30: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
8e40: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
8e50: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
8e60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8e70: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 66 69           if ((fi
8e80: 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20  leName == null) 
8e90: 7c 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  || (name == null
8ea0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
8eb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
8ec0: 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  fault;....      
8ed0: 20 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d          XmlDocum
8ee0: 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e  ent document = n
8ef0: 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29  ew XmlDocument()
8f00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8f10: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64     document.Load
8f20: 28 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74  (fileName); /* t
8f30: 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
8f40: 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d           XmlElem
8f50: 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f  ent element = do
8f60: 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e  cument.SelectSin
8f70: 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20 20  gleNode(..      
8f80: 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
8f90: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
8fa0: 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
8fb0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
8fc0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
8fd0: 20 20 20 20 20 20 20 20 22 2f 63 6f 6e 66 69 67          "/config
8fe0: 75 72 61 74 69 6f 6e 2f 61 70 70 53 65 74 74 69  uration/appSetti
8ff0: 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b 30  ngs/add[@key='{0
9000: 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73 0d  }']", name)) as.
9010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9020: 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f     XmlElement; /
9030: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
9040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9050: 65 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29  element != null)
9060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9070: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9080: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
9090: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
90a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
90b0: 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74  f (element.HasAt
90c0: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
90d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
90e0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
90f0: 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72   element.GetAttr
9100: 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d  ibute("value");.
9110: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9120: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
9130: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
9140: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
9150: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
9160: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9170: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a     if (expand)..
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91b0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
91c0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
91d0: 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
91e0: 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
91f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9200: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
9210: 3d 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e  = ReplaceEnviron
9220: 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65  mentVariableToke
9230: 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ns(value);..#end
9240: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
9250: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
9260: 65 20 3d 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f  e = ReplaceXmlCo
9270: 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 66  nfigFileTokens(f
9280: 69 6c 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b  ileName, value);
9290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
92b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
92c0: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
92d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92e0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
92f0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
9300: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
9310: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
9320: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
9330: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
9340: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
9350: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
9360: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
9370: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
9380: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
9390: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
93a0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
93b0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
93c0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
93d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
93e0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
93f0: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
9400: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
9410: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
9420: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
9430: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
9440: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
9450: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
9460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9470: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
9480: 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65  failed to get se
9490: 74 74 69 6e 67 20 5c 22 7b 30 7d 5c 22 20 76 61  tting \"{0}\" va
94a0: 6c 75 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  lue " +..       
94b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
94c0: 66 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69 67 75  from XML configu
94d0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 31  ration file \"{1
94e0: 7d 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c  }\": {2}", name,
94f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9500: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
9510: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
9520: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
9530: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9540: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
9550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9570: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
9580: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
9590: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
95a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
95b0: 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d  eturn @default;.
95c0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
95d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
95e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
95f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
9620: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9630: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9640: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9650: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
9660: 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d  tempts to determ
9670: 69 6e 65 20 74 68 65 20 74 61 72 67 65 74 20 66  ine the target f
9680: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
9690: 74 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73  te value that is
96a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f  ..      /// asso
96b0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
96c0: 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65  specified manage
96d0: 64 20 61 73 73 65 6d 62 6c 79 2c 20 69 66 20 61  d assembly, if a
96e0: 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20 20 20 20  pplicable...    
96f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9700: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9710: 61 6d 20 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c  am name="assembl
9720: 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  y">..      /// T
9730: 68 65 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  he managed assem
9740: 62 6c 79 20 74 6f 20 72 65 61 64 20 74 68 65 20  bly to read the 
9750: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
9760: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
9770: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d  ..      /// from
9780: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
9790: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
97a0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
97b0: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
97c0: 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 66 72  of the target fr
97d0: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
97e0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
97f0: 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20  specified..     
9800: 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 61 73 73   /// managed ass
9810: 65 6d 62 6c 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20  embly -OR- null 
9820: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
9830: 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 49 66 20  determined.  If 
9840: 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  this..      /// 
9850: 61 73 73 65 6d 62 6c 79 20 77 61 73 20 63 6f 6d  assembly was com
9860: 70 69 6c 65 64 20 77 69 74 68 20 61 20 76 65 72  piled with a ver
9870: 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54  sion of the .NET
9880: 20 46 72 61 6d 65 77 6f 72 6b 20 70 72 69 6f 72   Framework prior
9890: 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76   to..      /// v
98a0: 65 72 73 69 6f 6e 20 34 2e 30 2c 20 74 68 65 20  ersion 4.0, the 
98b0: 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 4d  value returned M
98c0: 41 59 20 72 65 66 6c 65 63 74 20 74 68 61 74 20  AY reflect that 
98d0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e  version of the .
98e0: 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  NET..      /// F
98f0: 72 61 6d 65 77 6f 72 6b 20 69 6e 73 74 65 61 64  ramework instead
9900: 20 6f 66 20 74 68 65 20 6f 6e 65 20 61 73 73 6f   of the one asso
9910: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
9920: 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65  specified manage
9930: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  d..      /// ass
9940: 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  embly...      //
9950: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9960: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9970: 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73  ic string GetAss
9980: 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65  emblyTargetFrame
9990: 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  work(..         
99a0: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
99b0: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  ly..          ).
99c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
99d0: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
99e0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
99f0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 4e 45 54 5f       {..#if NET_
9a00: 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20  40 || NET_45 || 
9a10: 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34  NET_451 || NET_4
9a20: 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20  52 || NET_46 || 
9a30: 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34  NET_461 || NET_4
9a40: 36 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  62..            
9a50: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
9a60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9a70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
9a80: 73 65 6d 62 6c 79 2e 49 73 44 65 66 69 6e 65 64  sembly.IsDefined
9a90: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
9ab0: 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d 65 77  eof(TargetFramew
9ac0: 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66  orkAttribute), f
9ad0: 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alse))..        
9ae0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b00: 20 20 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f     TargetFramewo
9b10: 72 6b 41 74 74 72 69 62 75 74 65 20 74 61 72 67  rkAttribute targ
9b20: 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20  etFramework =.. 
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b40: 20 20 20 20 20 20 20 20 20 28 54 61 72 67 65 74           (Target
9b50: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
9b60: 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te)..           
9b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
9b80: 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f  ssembly.GetCusto
9b90: 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20  mAttributes(..  
9ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
9bc0: 6f 66 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f  of(TargetFramewo
9bd0: 72 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66 61  rkAttribute), fa
9be0: 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  lse)[0];....    
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c00: 20 20 72 65 74 75 72 6e 20 74 61 72 67 65 74 46    return targetF
9c10: 72 61 6d 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f  ramework.Framewo
9c20: 72 6b 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  rkName;..       
9c30: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9c40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
9c60: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
9c70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9c80: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
9c90: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
9ca0: 20 20 20 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45       }..#elif NE
9cb0: 54 5f 33 35 0d 0a 20 20 20 20 20 20 20 20 20 20  T_35..          
9cc0: 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54      return ".NET
9cd0: 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
9ce0: 6e 3d 76 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20  n=v3.5";..#elif 
9cf0: 4e 45 54 5f 32 30 0d 0a 20 20 20 20 20 20 20 20  NET_20..        
9d00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e        return ".N
9d10: 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73  ETFramework,Vers
9d20: 69 6f 6e 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64  ion=v2.0";..#end
9d30: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
9d40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
9d50: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
9d60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
9d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
9dc0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9dd0: 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 73 20      /// Accepts 
9de0: 61 20 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72  a long target fr
9df0: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
9e00: 65 20 76 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65  e value and make
9e10: 73 20 69 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20  s it into a..   
9e20: 20 20 20 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72     /// much shor
9e30: 74 65 72 20 76 65 72 73 69 6f 6e 2c 20 73 75 69  ter version, sui
9e40: 74 61 62 6c 65 20 66 6f 72 20 75 73 65 20 77 69  table for use wi
9e50: 74 68 20 4e 75 47 65 74 20 70 61 63 6b 61 67 65  th NuGet package
9e60: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9e70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9e80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9e90: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
9ea0: 2f 2f 2f 20 54 68 65 20 6c 6f 6e 67 20 74 61 72  /// The long tar
9eb0: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
9ec0: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 74 6f  tribute value to
9ed0: 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
9ee0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9ef0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9f00: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
9f10: 65 20 73 68 6f 72 74 20 74 61 72 67 65 74 20 66  e short target f
9f20: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
9f30: 74 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75  te value -OR- nu
9f40: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 0d  ll if it cannot.
9f50: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 64 65  .      /// be de
9f60: 74 65 72 6d 69 6e 65 64 20 6f 72 20 63 6f 6e 76  termined or conv
9f70: 65 72 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  erted...      //
9f80: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9f90: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9fa0: 69 63 20 73 74 72 69 6e 67 20 41 62 62 72 65 76  ic string Abbrev
9fb0: 69 61 74 65 54 61 72 67 65 74 46 72 61 6d 65 77  iateTargetFramew
9fc0: 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ork(..          
9fd0: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
9fe0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
9ff0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
a000: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
a010: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
a020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a030: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  turn value;.... 
a040: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
a050: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 22   value.Replace("
a060: 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
a070: 72 73 69 6f 6e 3d 76 22 2c 20 22 6e 65 74 22 29  rsion=v", "net")
a080: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c  ;..          val
a090: 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
a0a0: 63 65 28 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45  ce(".", String.E
a0b0: 6d 70 74 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mpty);....      
a0c0: 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
a0d0: 76 61 6c 75 65 2e 49 6e 64 65 78 4f 66 28 27 2c  value.IndexOf(',
a0e0: 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
a0f0: 20 69 66 20 28 69 6e 64 65 78 20 21 3d 20 2d 31   if (index != -1
a100: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a110: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 53   value = value.S
a120: 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
a130: 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
a140: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
a150: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a160: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a1b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a1c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  >..      /// If 
a1d0: 6e 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61  necessary, repla
a1e0: 63 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ces all supporte
a1f0: 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  d environment va
a200: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20  riable tokens.. 
a210: 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
a220: 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 76  eir associated v
a230: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  alues...      //
a240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a250: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a260: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
a270: 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e      /// A settin
a280: 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f  g value read fro
a290: 6d 20 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  m an environment
a2a0: 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20   variable...    
a2b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a2c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
a2d0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
a2e0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
a2f0: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
a300: 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61  value" /> will a
a310: 6c 6c 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20  ll supported..  
a320: 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d      /// environm
a330: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
a340: 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e  ens replaced.  N
a350: 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  o return value i
a360: 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20  s reserved..    
a370: 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74    /// to indicat
a380: 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69  e an error.  Thi
a390: 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20  s method cannot 
a3a0: 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  fail...      ///
a3b0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
a3c0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
a3d0: 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65  c string Replace
a3e0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
a3f0: 62 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20  bleTokens(..    
a400: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
a410: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  ue..          ).
a420: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
a430: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
a440: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
a450: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
a460: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a470: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
a480: 72 79 20 3d 20 47 65 74 43 61 63 68 65 64 41 73  ry = GetCachedAs
a490: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
a4a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
a4b0: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
a4c0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
a4d0: 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
a4e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
a500: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
a510: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
a530: 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c  lue = value.Repl
a540: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
a550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a560: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
a570: 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72  yToken, director
a580: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
a590: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
a5a0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
a5b0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
a5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
a5e0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
a5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
a600: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
a610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
a620: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
a630: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
a640: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
a650: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
a660: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
a670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a680: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6a0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
a6b0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
a6c0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
a6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
a6f0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
a700: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
a710: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a730: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
a740: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
a750: 6f 20 72 65 70 6c 61 63 65 20 61 73 73 65 6d 62  o replace assemb
a760: 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ly " +..        
a770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a780: 20 20 20 20 20 20 22 64 69 72 65 63 74 6f 72 79        "directory
a790: 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29   token: {0}", e)
a7a0: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
a7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a7c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
a7e0: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
a7f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a810: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
a820: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
a830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
a840: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
a850: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a880: 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
a890: 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  y = null;....   
a8a0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
a8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
a8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a8d0: 20 20 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73     assembly = As
a8e0: 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74  sembly.GetExecut
a8f0: 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a  ingAssembly();..
a900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
a910: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
a920: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
a930: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
a940: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
a950: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
a960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
a970: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
a980: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
a990: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
a9a0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
a9b0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9d0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
a9e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa00: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
aa10: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
aa20: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
aa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa40: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
aa50: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
aa60: 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
aa70: 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
aaa0: 61 69 6c 65 64 20 74 6f 20 6f 62 74 61 69 6e 20  ailed to obtain 
aab0: 65 78 65 63 75 74 69 6e 67 20 22 20 2b 0d 0a 20  executing " +.. 
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aad0: 20 20 20 20 20 20 20 20 20 22 61 73 73 65 6d 62           "assemb
aae0: 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
aaf0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ab10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab20: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
ab60: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
ab70: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
ab80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
aba0: 20 20 20 73 74 72 69 6e 67 20 74 61 72 67 65 74     string target
abb0: 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41 62 62 72  Framework = Abbr
abc0: 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61 6d  eviateTargetFram
abd0: 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20  ework(..        
abe0: 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73 73            GetAss
abf0: 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65  emblyTargetFrame
ac00: 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79 29 29 3b  work(assembly));
ac10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ac20: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
ac30: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72 67  NullOrEmpty(targ
ac40: 65 74 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20  etFramework)).. 
ac50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
ac80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ac90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aca0: 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e    value = value.
acb0: 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20  Replace(..      
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acd0: 20 20 20 20 54 61 72 67 65 74 46 72 61 6d 65 77      TargetFramew
ace0: 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72 67 65 74  orkToken, target
acf0: 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20 20  Framework);..   
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ad10: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
ad20: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
ad30: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
ad40: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
ad50: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
ad60: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
ad70: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
ad80: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
ad90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ada0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
adb0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
adc0: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
add0: 20 20 20 20 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 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ae00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae10: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
ae20: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
ae30: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
ae40: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae60: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
ae70: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
ae80: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
ae90: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aeb0: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
aec0: 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63  failed to replac
aed0: 65 20 74 61 72 67 65 74 20 22 20 2b 0d 0a 20 20  e target " +..  
aee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72 61              "fra
af00: 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30  mework token: {0
af10: 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
af20: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
af30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
af40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af50: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
af60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
af80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
af90: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
afa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
afb0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
afc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
afd0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
afe0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
aff0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
b000: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
b010: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
b020: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b070: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
b080: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b090: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
b0a0: 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f  urns the value o
b0b0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
b0c0: 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74  setting, using t
b0d0: 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f  he XML..      //
b0e0: 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  / configuration 
b0f0: 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65 20  file and/or the 
b100: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
b110: 61 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63 75  ables for the cu
b120: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
b130: 20 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20   process and/or 
b140: 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74  the current syst
b150: 65 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62  em, when availab
b160: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
b170: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
b180: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
b190: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
b1a0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
b1b0: 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  the setting...  
b1c0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b1d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
b1e0: 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  am name="default
b1f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
b200: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
b210: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65  turned if the se
b220: 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65  tting has not be
b230: 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  en set explicitl
b240: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  y..      /// or 
b250: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
b260: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
b270: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
b280: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
b290: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
b2a0: 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  lue of the setti
b2b0: 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61  ng -OR- the defa
b2c0: 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66  ult value specif
b2d0: 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  ied by..      //
b2e0: 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  / <paramref name
b2f0: 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66  ="default" /> if
b300: 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e   it has not been
b310: 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20   set explicitly 
b320: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61  or..      /// ca
b330: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
b340: 65 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  ed.  By default,
b350: 20 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73 20   all references 
b360: 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20 20  to existing..   
b370: 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65     /// environme
b380: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 77 69 6c  nt variables wil
b390: 6c 20 62 65 20 65 78 70 61 6e 64 65 64 20 74 6f  l be expanded to
b3a0: 20 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e   their correspon
b3b0: 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20 20  ding values..   
b3c0: 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68     /// within th
b3d0: 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  e value to be re
b3e0: 74 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65 69  turned unless ei
b3f0: 74 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70  ther the "No_Exp
b400: 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f  and" or..      /
b410: 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70  // "No_Expand_<p
b420: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61  aramref name="na
b430: 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d  me" />" environm
b440: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
b450: 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f  set [to..      /
b460: 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20  // anything]... 
b470: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
b480: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
b490: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
b4a0: 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  g GetSettingValu
b4b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
b4c0: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a  ring name,    /*
b4d0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
b4e0: 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c    string @defaul
b4f0: 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  t /* in */..    
b500: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
b510: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
b520: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b530: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b540: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
b550: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 61  E: If the specia
b560: 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53  l "No_SQLiteGetS
b570: 65 74 74 69 6e 67 56 61 6c 75 65 22 20 65 6e 76  ettingValue" env
b580: 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  ironment..      
b590: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
b5a0: 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f  iable is set [to
b5b0: 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73   anything], this
b5c0: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c 77   method will alw
b5d0: 61 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ays..          /
b5e0: 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74  /       return t
b5f0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
b600: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
b610: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
b620: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
b630: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
b640: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
b650: 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65      "No_SQLiteGe
b660: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 29 20  tSettingValue") 
b670: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
b680: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b690: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
b6a0: 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ault;..         
b6b0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
b6c0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b710: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e  .          if (n
b720: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
b730: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b740: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a  rn @default;....
b750: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b7a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  ...          #re
b7b0: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
b7c0: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
b7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b7e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
b7f0: 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74 20  E: We are about 
b800: 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69 6e  to read a settin
b810: 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  g value from the
b820: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
b830: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b840: 20 6f 72 20 70 6f 73 73 69 62 6c 79 20 66 72 6f   or possibly fro
b850: 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  m the XML config
b860: 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72  uration file; cr
b870: 65 61 74 65 20 6f 72 0d 0a 20 20 20 20 20 20 20  eate or..       
b880: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 63 72     //       incr
b890: 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70  ement the approp
b8a0: 72 69 61 74 65 20 73 74 61 74 69 73 74 69 63 20  riate statistic 
b8b0: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
b8c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  //..          De
b8d0: 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
b8e0: 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  tSettingReadCoun
b8f0: 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d  t(name, false);.
b900: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b910: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
b920: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b970: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  ....          bo
b980: 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75 65  ol expand = true
b990: 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20 45 6e 76  ; /* SHARED: Env
b9a0: 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20 58  ironment -AND- X
b9b0: 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e 20  ML config file. 
b9c0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
b9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
ba20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ba30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
ba40: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
ba50: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
ba60: 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e       if (Environ
ba70: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
ba80: 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f  entVariable("No_
ba90: 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c  Expand") != null
baa0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
bac0: 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  pand = false;.. 
bad0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
bae0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 45        else if (E
baf0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
bb00: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
bb10: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
bb20: 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68        HelperMeth
bb30: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
bb40: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
bb50: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  ariantCulture,..
bb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb70: 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d    "No_Expand_{0}
bb80: 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c  ", name)) != nul
bb90: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
bba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
bbb0: 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  xpand = false;..
bbc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
bbd0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
bbe0: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74   Environment.Get
bbf0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
bc00: 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  ble(name);....  
bc10: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
bc20: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
bc30: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
bc40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
bc50: 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64        if (expand
bc60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
bc70: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
bc80: 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45  ironment.ExpandE
bc90: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
bca0: 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  les(value);.... 
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
bcc0: 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69  ue = ReplaceEnvi
bcd0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54  ronmentVariableT
bce0: 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 20  okens(value);.. 
bcf0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
bd00: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
bd10: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
bd20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
bd30: 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20   value;....     
bd40: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
bd50: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
bd60: 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c  he "No_SQLiteXml
bd70: 43 6f 6e 66 69 67 46 69 6c 65 22 20 65 6e 76 69  ConfigFile" envi
bd80: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
bd90: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   is..          /
bda0: 2f 20 20 20 20 20 20 20 73 65 74 20 5b 74 6f 20  /       set [to 
bdb0: 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20  anything], this 
bdc0: 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45  method will NEVE
bdd0: 52 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 0d  R read from the.
bde0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
bdf0: 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72      XML configur
be00: 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20  ation file...   
be10: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
be20: 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e       if (Environ
be30: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
be40: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
be60: 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69  o_SQLiteXmlConfi
be70: 67 46 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29  gFile") != null)
be80: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
be90: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
bea0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
beb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
bec0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
bed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
bf20: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
bf30: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
bf40: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
bf50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
bf60: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20  // NOTE: We are 
bf70: 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20  about to read a 
bf80: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72  setting value fr
bf90: 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20  om the XML..    
bfa0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
bfb0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
bfc0: 65 3b 20 63 72 65 61 74 65 20 6f 72 20 69 6e 63  e; create or inc
bfd0: 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f  rement the appro
bfe0: 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20  priate..        
bff0: 20 20 2f 2f 20 20 20 20 20 20 20 73 74 61 74 69    //       stati
c000: 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stic now...     
c010: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c020: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
c030: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
c040: 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75  dCount(name, tru
c050: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
c060: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
c070: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
c080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
c0d0: 20 20 72 65 74 75 72 6e 20 47 65 74 53 65 74 74    return GetSett
c0e0: 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f  ingValueViaXmlCo
c0f0: 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20  nfigFile(..     
c100: 20 20 20 20 20 20 20 20 20 47 65 74 43 61 63 68           GetCach
c110: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
c120: 61 6d 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65  ame(), name, @de
c130: 66 61 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d  fault, expand);.
c140: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
c150: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
c1a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c1b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c1c0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
c1d0: 74 69 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54  tic string ListT
c1e0: 6f 53 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74  oString(IList<st
c1f0: 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20  ring> list)..   
c200: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c210: 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c  if (list == null
c220: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c230: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
c240: 0a 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e  .          Strin
c250: 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20  gBuilder result 
c260: 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c  = new StringBuil
c270: 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  der();....      
c280: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
c290: 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c  ing element in l
c2a0: 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ist)..          
c2b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c2c0: 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20   if (element == 
c2d0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
c2e0: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
c2f0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
c300: 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c      if (result.L
c310: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c330: 73 75 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29  sult.Append(' ')
c340: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c350: 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
c360: 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20  (element);..    
c370: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c380: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
c390: 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  lt.ToString();..
c3a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c3b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c400: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
c410: 69 63 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41  ic int CheckForA
c420: 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50  rchitecturesAndP
c430: 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20  latforms(..     
c440: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
c450: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
c460: 20 20 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e    ref List<strin
c470: 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20  g> matches..    
c480: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
c490: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
c4a0: 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20  result = 0;.... 
c4b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 74           if (mat
c4c0: 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ches == null).. 
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
c4e0: 63 68 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c  ches = new List<
c4f0: 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20  string>();....  
c500: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
c510: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
c520: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c530: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
c540: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
c550: 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 20 26  pty(directory) &
c560: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
c570: 20 20 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41       (processorA
c580: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
c590: 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a  orms != null))..
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c5b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c5c0: 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56     foreach (KeyV
c5d0: 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c  aluePair<string,
c5e0: 20 73 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20   string> pair.. 
c5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c600: 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 70 72             in pr
c610: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
c620: 75 72 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20  urePlatforms).. 
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c640: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c650: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69            if (Di
c660: 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d  rectory.Exists(M
c670: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
c680: 64 69 72 65 63 74 6f 72 79 2c 20 70 61 69 72 2e  directory, pair.
c690: 4b 65 79 29 29 29 0d 0a 20 20 20 20 20 20 20 20  Key)))..        
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6c0: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
c6d0: 65 73 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 29  es.Add(pair.Key)
c6e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
c700: 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ult++;..        
c710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c720: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c730: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c740: 76 61 6c 75 65 20 3d 20 70 61 69 72 2e 56 61 6c  value = pair.Val
c750: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c770: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
c780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c790: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
c7a0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c7c0: 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73   (Directory.Exis
c7d0: 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  ts(MaybeCombineP
c7e0: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 76  ath(directory, v
c7f0: 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20  alue)))..       
c800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
c810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c820: 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63              matc
c830: 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d  hes.Add(value);.
c840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c850: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
c860: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
c870: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c8a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
c8b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
c8c0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
c8d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
c8e0: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
c930: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c940: 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d   bool CheckAssem
c950: 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20  blyCodeBase(..  
c960: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
c970: 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20   assembly,..    
c980: 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
c990: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
c9a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
c9b0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
c9c0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c9d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
c9e0: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
c9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ca00: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
ca10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ca20: 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61     string codeBa
ca30: 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f  se = assembly.Co
ca40: 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20  deBase;....     
ca50: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
ca60: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
ca70: 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20  y(codeBase))..  
ca80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca90: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
caa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55  .              U
cab0: 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69  ri uri = new Uri
cac0: 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20  (codeBase);..   
cad0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
cae0: 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20  g localFileName 
caf0: 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b  = uri.LocalPath;
cb00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cb10: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
cb20: 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65  ts(localFileName
cb30: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
cb40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
cb50: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
cb60: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
cb70: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
cb80: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a  DirectoryName(..
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cba0: 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29    localFileName)
cbb0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
cbc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
cbd0: 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46  tring xmlConfigF
cbe0: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
cbf0: 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
cc10: 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
cc20: 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
cc30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
cc40: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78  f (File.Exists(x
cc50: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
cc60: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
cc70: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
cc80: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
cc90: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
ccb0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
ccc0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
cce0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ccf0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
cd00: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd20: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
cd30: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
cd40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
cd60: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
cd70: 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d  -loader found XM
cd80: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
cd90: 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  file " +..      
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
cdc0: 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
cdd0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
cde0: 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
cdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce00: 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e            xmlCon
ce10: 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  figFileName)); /
ce20: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ce40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce50: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
ce90: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
cea0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
ceb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cec0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
ced0: 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d   localFileName;.
cee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cef0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
cf00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
cf10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cf20: 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d    List<string> m
cf30: 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  atches = null;..
cf40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf50: 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68  if (CheckForArch
cf60: 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
cf70: 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c  forms(directory,
cf80: 20 72 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20   ref matches) > 
cf90: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
cfa0: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
cfb0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
cfc0: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
cfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
cfe0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
cff0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
d010: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
d020: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
d030: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
d040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d050: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
d060: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
d070: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
d090: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
d0a0: 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61  -loader found na
d0b0: 74 69 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f  tive sub-directo
d0c0: 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20  ries " +..      
d0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0e0: 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
d0f0: 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
d100: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
d110: 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
d120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d130: 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f            ListTo
d140: 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29  String(matches))
d150: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d170: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
d180: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
d190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d1b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
d1c0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
d1d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
d1e0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
d1f0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
d200: 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  me = localFileNa
d210: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
d220: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
d230: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
d240: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d250: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
d260: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
d270: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
d280: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
d290: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
d2a0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
d2b0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
d2c0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
d2d0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
d2e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
d2f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
d300: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
d310: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
d320: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
d330: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d340: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
d350: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
d360: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
d370: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
d380: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d390: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d3a0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3c0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
d3d0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
d3e0: 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20  d to check code 
d3f0: 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  base " +..      
d400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d410: 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65  "for currently e
d420: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
d430: 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  y: {0}", e)); /*
d440: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
d450: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d460: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
d470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
d480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d490: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
d4a0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
d4b0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
d4c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d4d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
d4e0: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
d4f0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
d500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d540: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
d550: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d560: 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 74      /// Resets t
d570: 68 65 20 63 61 63 68 65 64 20 61 73 73 65 6d 62  he cached assemb
d580: 6c 79 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c  ly directory val
d590: 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69 6e 67  ue, thus forcing
d5a0: 20 74 68 65 20 6e 65 78 74 0d 0a 20 20 20 20 20   the next..     
d5b0: 20 2f 2f 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65   /// call to <se
d5c0: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
d5d0: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
d5e0: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f  ry" /> method to
d5f0: 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   rely..      ///
d600: 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65 20 63   upon the <see c
d610: 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79  ref="GetAssembly
d620: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
d630: 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20 74 68  thod to fetch th
d640: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  e..      /// ass
d650: 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e  embly directory.
d660: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
d670: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
d680: 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
d690: 64 20 52 65 73 65 74 43 61 63 68 65 64 41 73 73  d ResetCachedAss
d6a0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
d6b0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
d6c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
d6d0: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
d6e0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
d6f0: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
d700: 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
d710: 74 28 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43  t("Method_ResetC
d720: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
d730: 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
d740: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
d750: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
d760: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
d770: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
d780: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d790: 20 20 20 20 20 20 20 63 61 63 68 65 64 41 73 73         cachedAss
d7a0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
d7b0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
d7c0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
d7d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
d7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d820: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d840: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
d850: 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20 64  rns the cached d
d860: 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
d870: 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
d880: 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  tly..      /// b
d890: 65 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20 69  eing executed, i
d8a0: 66 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49 66  f available.  If
d8b0: 20 74 68 65 20 63 61 63 68 65 64 20 61 73 73 65   the cached asse
d8c0: 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20 76  mbly directory v
d8d0: 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  alue..      /// 
d8e0: 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65  is not available
d8f0: 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  , the <see cref=
d900: 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65  "GetAssemblyDire
d910: 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
d920: 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   will..      ///
d930: 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61   be used to obta
d940: 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  in the assembly 
d950: 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
d960: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d970: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
d980: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
d990: 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 66   The directory f
d9a0: 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  or the assembly 
d9b0: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
d9c0: 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75  executed -OR- nu
d9d0: 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll if..      ///
d9e0: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
d9f0: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
da00: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
da10: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
da20: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
da30: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
da40: 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20  rectory()..     
da50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
da60: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
da70: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
da80: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
da90: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
daa0: 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
dab0: 6f 64 5f 47 65 74 43 61 63 68 65 64 41 73 73 65  od_GetCachedAsse
dac0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
dad0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
dae0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
daf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
db00: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
db10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
db20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
db30: 20 28 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79   (cachedAssembly
db40: 44 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  Directory != nul
db50: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
db60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63        return cac
db70: 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
db80: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
db90: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
dba0: 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62  return GetAssemb
dbb0: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
dbc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
dbd0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
dc20: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
dc30: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
dc40: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
dc50: 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  he directory for
dc60: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
dc70: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20  rrently being.. 
dc80: 20 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65       /// execute
dc90: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
dca0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
dcb0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
dcc0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72       /// The dir
dcd0: 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61  ectory for the a
dce0: 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c  ssembly currentl
dcf0: 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  y being executed
dd00: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20   -OR- null if.. 
dd10: 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e       /// it cann
dd20: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
dd30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
dd40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
dd50: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
dd60: 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79  ring GetAssembly
dd70: 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20  Directory()..   
dd80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dd90: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
dda0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
ddb0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
ddc0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
ddd0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
dde0: 74 68 6f 64 5f 47 65 74 41 73 73 65 6d 62 6c 79  thod_GetAssembly
ddf0: 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65  Directory");..#e
de00: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
de10: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
de20: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
de30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
de40: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
de50: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
de60: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
de70: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a  gAssembly();....
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
de90: 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75   (assembly == nu
dea0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
deb0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
dec0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
ded0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
dee0: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
def0: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
df00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
df20: 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62  emblyName assemb
df30: 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  lyName = assembl
df40: 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a  y.GetName();....
df50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
df60: 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d   (assemblyName =
df70: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
df80: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
df90: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
dfa0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
dfb0: 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  e = assemblyName
dfc0: 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73  .CodeBase;..#els
dfd0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
dfe0: 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d   if (!CheckAssem
dff0: 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65  blyCodeBase(asse
e000: 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61  mbly, ref fileNa
e010: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
e020: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
e030: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
e040: 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
e050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
e060: 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
e070: 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
e080: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
e090: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
e0a0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
e0b0: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
e0c0: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
e0d0: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c  irectoryName(fil
e0e0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
e0f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
e100: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
e110: 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20  y(directory)).. 
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e130: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
e140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
e150: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
e160: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
e170: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e180: 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64 41           cachedA
e190: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
e1a0: 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20   = directory;.. 
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1d0: 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
e1e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
e1f0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
e200: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
e210: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
e220: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
e230: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
e240: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
e250: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
e260: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
e270: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e280: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
e290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2a0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
e2b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e2c0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
e2d0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
e2e0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
e2f0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
e300: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
e310: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
e320: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
e330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
e340: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
e350: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
e360: 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72 79  to get directory
e370: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
e380: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72              "for
e390: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
e3a0: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b  ting assembly: {
e3b0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
e3c0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
e3d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e3e0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
e3f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e410: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e430: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
e440: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e450: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
e460: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
e470: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e480: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e4d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70        #region Op
e4e0: 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51  tional Native SQ
e4f0: 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65  Lite Library Pre
e500: 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20  -Loading Code.. 
e510: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
e520: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72  / NOTE: If we ar
e530: 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68  e looking for th
e540: 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
e550: 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e  e DLL ("sqlite3.
e560: 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f  dll"),..      //
e570: 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65 72         the inter
e580: 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e  op DLL ("SQLite.
e590: 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f  Interop.dll"), o
e5a0: 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67  r we are running
e5b0: 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   on the..      /
e5c0: 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d  /       .NET Com
e5d0: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
e5e0: 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64  we should includ
e5f0: 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c  e this code (onl
e600: 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y if the..      
e610: 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72 65  //       feature
e620: 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65   has actually be
e630: 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68  en enabled).  Th
e640: 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65  is code would be
e650: 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20   totally..      
e660: 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64 61  //       redunda
e670: 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c  nt if this modul
e680: 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c  e has been bundl
e690: 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65  ed into the mixe
e6a0: 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  d-mode..      //
e6b0: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e         assembly.
e6c0: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20  ..      //..#if 
e6d0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
e6e0: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
e6f0: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
e700: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e710: 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
e720: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79     // NOTE: Only
e730: 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20   compile in the 
e740: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  native library p
e750: 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20  re-load code if 
e760: 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20  the feature..   
e770: 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20     //       has 
e780: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72  been enabled for
e790: 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20   this build...  
e7a0: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c      //..#if PREL
e7b0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
e7c0: 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RY..      /// <s
e7d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
e7e0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
e7f0: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
e800: 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69  ariable containi
e810: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
e820: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68  ..      /// arch
e830: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
e840: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
e850: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e860: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
e870: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
e880: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f  donly string PRO
e890: 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
e8a0: 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  URE =..         
e8b0: 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48   "PROCESSOR_ARCH
e8c0: 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20  ITECTURE";....  
e8d0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e920: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
e930: 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
e940: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e950: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e960: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69  native module fi
e970: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
e980: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
e990: 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a  brary or null...
e9a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e9b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
e9c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
e9d0: 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ng _SQLiteNative
e9e0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
e9f0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
ea00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
ea50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ea60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
ea70: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
ea80: 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  le for the nativ
ea90: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
eaa0: 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20   or the value.. 
eab0: 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e       /// IntPtr.
eac0: 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  Zero...      ///
ead0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
eae0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
eaf0: 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65  c IntPtr _SQLite
eb00: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
eb10: 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  le = IntPtr.Zero
eb20: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
eb30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
eb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb80: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
eb90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
eba0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
ebb0: 73 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20  s the base file 
ebc0: 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20 61 6e  name (without an
ebd0: 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e 66 6f  y directory info
ebe0: 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  rmation)..      
ebf0: 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61 74 69  /// for the nati
ec00: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
ec10: 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64  y to be pre-load
ec20: 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  ed by this class
ec30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
ec40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
ec50: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
ec60: 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
ec70: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
ec80: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
ec90: 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70   library to be p
eca0: 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20  re-loaded by..  
ecb0: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61      /// this cla
ecc0: 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ss -OR- null if 
ecd0: 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74  its value cannot
ece0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
ecf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
ed00: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
ed10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
ed20: 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c 69 62  ing GetNativeLib
ed30: 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
ed40: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
ed50: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
ed60: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
ed70: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
ed90: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62 72  eLoadSQLite_Libr
eda0: 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22  aryFileNameOnly"
edb0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
edc0: 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61        if (fileNa
edd0: 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  meOnly != null).
ede0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
edf0: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e  eturn fileNameOn
ee00: 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ly;....         
ee10: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 44   return SQLITE_D
ee20: 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f  LL; /* COMPAT */
ee30: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
ee40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ee50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
ee90: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
eea0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61  >..      /// Sea
eeb0: 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61  rches for the na
eec0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
eed0: 61 72 79 20 69 6e 20 74 68 65 20 64 69 72 65 63  ary in the direc
eee0: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
eef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61  .      /// the a
ef00: 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c  ssembly currentl
ef10: 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  y being executed
ef20: 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20   as well as the 
ef30: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
ef40: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
ef50: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
ef60: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20  ation domain... 
ef70: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ef80: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
ef90: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65  param name="base
efa0: 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20  Directory">..   
efb0: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
efc0: 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
efd0: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
efe0: 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
eff0: 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
f000: 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63   /// directory c
f010: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
f020: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
f030: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
f040: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
f050: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
f060: 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
f070: 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
f080: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
f090: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
f0a0: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
f0b0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
f0c0: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f  e name..      //
f0d0: 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61  / of the immedia
f0e0: 74 65 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e  te directory (i.
f0f0: 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20 66 72  e. the offset fr
f100: 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69 72 65  om the base dire
f110: 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f  ctory)..      //
f120: 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  / containing the
f130: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
f140: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
f150: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
f160: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
f170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
f180: 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69  zero (success) i
f190: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
f1a0: 69 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20  ite library was 
f1b0: 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65  found; otherwise
f1c0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
f1d0: 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20  o (failure)...  
f1e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
f1f0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
f200: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65  e static bool Se
f210: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
f220: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  (..          ref
f230: 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
f240: 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 2f 2a  ctory,        /*
f250: 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
f260: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
f270: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
f280: 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  ure /* out */.. 
f290: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
f2a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
f2b0: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
f2c0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
f2d0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
f2e0: 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44  ite_NoSearchForD
f2f0: 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29  irectory", null)
f300: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
f310: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f320: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
f330: 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20  se; /* DISABLED 
f340: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  */..          }.
f350: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
f360: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
f370: 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  TE: Determine th
f380: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
f390: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
f3a0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
f3b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
f3c0: 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e      If this is n
f3d0: 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73  ot known by this
f3e0: 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f   class, we canno
f3f0: 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20  t continue...   
f400: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f410: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
f420: 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61  NameOnly = GetNa
f430: 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
f440: 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ameOnly();....  
f450: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
f460: 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c  NameOnly == null
f470: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f480: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
f490: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
f4a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
f4b0: 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69 73  E: Build the lis
f4c0: 74 20 6f 66 20 62 61 73 65 20 64 69 72 65 63 74  t of base direct
f4d0: 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65 73  ories and proces
f4e0: 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20  sor/platform..  
f4f0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
f500: 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6c   names.  These l
f510: 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65  ists will be use
f520: 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65  d to help locate
f530: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
f540: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
f550: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
f560: 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70 20  ary (or interop 
f570: 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72 65  assembly) to pre
f580: 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20  -load into..    
f590: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
f5a0: 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  his process...  
f5b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f5c0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 64        string[] d
f5d0: 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a  irectories = {..
f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
f5f0: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
f600: 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54  ry(),..#if !PLAT
f610: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f620: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
f630: 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43       AppDomain.C
f640: 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73  urrentDomain.Bas
f650: 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e  eDirectory,..#en
f660: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
f670: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
f680: 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72 65 63  tring[] subDirec
f690: 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20  tories = {..    
f6a0: 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f            GetPro
f6b0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
f6c0: 72 65 28 29 2c 20 47 65 74 50 6c 61 74 66 6f 72  re(), GetPlatfor
f6d0: 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20  mName(null)..   
f6e0: 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
f6f0: 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
f700: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
f710: 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65 73 29   in directories)
f720: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f740: 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  (directory == nu
f750: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f760: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
f770: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f780: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
f790: 67 20 73 75 62 44 69 72 65 63 74 6f 72 79 20 69  g subDirectory i
f7a0: 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69 65 73  n subDirectories
f7b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f7c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f7d0: 20 20 20 20 20 20 69 66 20 28 73 75 62 44 69 72        if (subDir
f7e0: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
f7f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f800: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
f810: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f820: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
f830: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
f840: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
f850: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
f860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f870: 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61    MaybeCombinePa
f880: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 73 75  th(directory, su
f890: 62 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20  bDirectory),..  
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8b0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79      fileNameOnly
f8c0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f8d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
f8f0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53  / NOTE: If the S
f900: 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65  QLite DLL file e
f910: 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75  xists, return su
f920: 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
f930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
f940: 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75     Prior to retu
f950: 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62  rning, set the b
f960: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e  ase directory an
f970: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
f980: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
f990: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
f9a0: 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20  ture to reflect 
f9b0: 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20  the location..  
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9d0: 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65 20 69  //       where i
f9e0: 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20  t was found...  
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
fa10: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
fa20: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
fa30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fa40: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
fa50: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
fa60: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa80: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
fa90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
faa0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
fac0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
fad0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
fae0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb00: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
fb10: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
fb20: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb40: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
fb50: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f  ry pre-loader fo
fb60: 75 6e 64 20 6e 61 74 69 76 65 20 66 69 6c 65 20  und native file 
fb70: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb90: 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22     "name \"{0}\"
fba0: 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 69 72 65  , returning dire
fbb0: 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e  ctory \"{1}\" an
fbc0: 64 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  d " +..         
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbe0: 20 20 20 20 20 22 73 75 62 2d 64 69 72 65 63 74       "sub-direct
fbf0: 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c  ory \"{2}\"...",
fc00: 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63   fileName, direc
fc10: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc30: 20 20 20 20 20 73 75 62 44 69 72 65 63 74 6f 72       subDirector
fc40: 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  y)); /* throw */
fc50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc60: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc80: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
fca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fcb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
fcc0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
fcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fce0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
fcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd00: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
fd10: 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  y = directory;..
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd30: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
fd40: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 73 75  rchitecture = su
fd50: 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20  bDirectory;..   
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20     return true; 
fd80: 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20  /* FOUND */..   
fd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
fda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fdb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
fdc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
fdd0: 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54  rn false; /* NOT
fde0: 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20   FOUND */..     
fdf0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe40: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
fe50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
fe60: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
fe70: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61  d returns the ba
fe80: 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
fe90: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
fea0: 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  ication..      /
feb0: 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  // domain...    
fec0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
fed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
fee0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
fef0: 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
ff00: 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72  ory for the curr
ff10: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
ff20: 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c  domain -OR- null
ff30: 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f   if it..      //
ff40: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
ff50: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
ff60: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
ff70: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
ff80: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61  tic string GetBa
ff90: 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  seDirectory().. 
ffa0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ffb0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ffc0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
ffd0: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
ffe0: 61 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e  aseDirectory" en
fff0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
10000 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  le..          //
10010 20 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75         is set, u
10020 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66  se it verbatim f
10030 6f 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65  or the base dire
10040 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  ctory...        
10050 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10060 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
10070 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
10080 75 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  ue("PreLoadSQLit
10090 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22  e_BaseDirectory"
100a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
100b0 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
100c0 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
100d0 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
100e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
100f0 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  n directory;....
10100 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10110 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10120 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10130 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
10140 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
10150 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62  SQLite_UseAssemb
10160 6c 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  lyDirectory" env
10170 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  ironment..      
10180 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
10190 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
101a0 20 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e   anything), then
101b0 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20   attempt to use 
101c0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
101d0 2f 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72  /       director
101e0 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
101f0 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
10200 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20  ting assembly.. 
10210 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
10220 20 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44    (i.e. System.D
10230 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73  ata.SQLite) ints
10240 65 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69  ead of the appli
10250 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  cation..        
10260 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69    //       domai
10270 6e 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  n base directory
10280 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
10290 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
102a0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
102b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
102c0 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
102d0 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
102e0 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21  ectory", null) !
102f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10300 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10310 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
10320 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
10330 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
10340 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
10350 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
10360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10370 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
10380 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
10390 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
103a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
103b0 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
103c0 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
103d0 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ng the base dire
103e0 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20  ctory of the..  
103f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
10400 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
10410 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20  tion domain...  
10420 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10430 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70        return App
10440 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
10450 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
10460 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ry;..#else..    
10470 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10480 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
10490 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b  erwise, fallback
104a0 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69   on using the di
104b0 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
104c0 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ng..          //
104d0 20 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65         the curre
104e0 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
104f0 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
10500 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10510 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65    return GetAsse
10520 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
10530 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
10540 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
10550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10590 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
105a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
105b0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
105c0 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c  if the dynamic l
105d0 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
105e0 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20 61   name requires a
105f0 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f   suffix..      /
10600 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20 69  // and adds it i
10610 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
10620 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10630 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
10640 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
10650 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
10660 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79   The original dy
10670 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
10680 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20  ry file name to 
10690 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20  inspect...      
106a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
106b0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
106c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
106d0 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
106e0 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c  brary file name,
106f0 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69   possibly modifi
10700 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e  ed to include an
10710 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65  ..      /// exte
10720 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  nsion...      //
10730 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
10740 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
10750 69 63 20 73 74 72 69 6e 67 20 46 69 78 55 70 44  ic string FixUpD
10760 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20  llFileName(..   
10770 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
10780 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d  leName /* in */.
10790 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
107a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
107b0 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
107c0 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
107d0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
107e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
107f0 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68    if (HelperMeth
10800 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29  ods.IsWindows())
10810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10820 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10830 20 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61       if (!fileNa
10840 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46  me.EndsWith(DllF
10850 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20  ileExtension,.. 
10860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10870 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
10880 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
10890 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20  lIgnoreCase)).. 
108a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
108c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
108d0 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46   fileName + DllF
108e0 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20  ileExtension;.. 
108f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10900 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10910 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
10920 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
10930 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
10940 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
109a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
109b0 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
109c0 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
109d0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
109e0 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
109f0 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
10a00 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  /// process...  
10a10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10a20 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
10a30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
10a40 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72  // The processor
10a50 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
10a60 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
10a70 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  cess -OR- null i
10a80 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  f it..      /// 
10a90 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10aa0 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
10ab0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
10ac0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10ad0 63 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63  c string GetProc
10ae0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
10af0 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
10b00 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10b10 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
10b20 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
10b30 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72  Lite_ProcessorAr
10b40 63 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69  chitecture" envi
10b50 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
10b60 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
10b70 61 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65  able is set, use
10b80 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72   it verbatim for
10b90 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
10ba0 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cessor..        
10bb0 20 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69    //       archi
10bc0 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
10bd0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10be0 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
10bf0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
10c00 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
10c10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10c20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
10c30 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
10c40 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  cture", null);..
10c50 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
10c60 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
10c70 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  cture != null)..
10c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10c90 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72  turn processorAr
10ca0 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20  chitecture;.... 
10cb0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
10cc0 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47         // BUGBUG
10cd0 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61  : Will this alwa
10ce0 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d  ys be reliable?.
10cf0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
10d00 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
10d10 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
10d20 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
10d30 28 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49  (PROCESSOR_ARCHI
10d40 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d  TECTURE, null);.
10d50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
10d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
10db0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10dc0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
10dd0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
10de0 20 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72   HACK: Check for
10df0 20 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22   an "impossible"
10e00 20 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20   situation.  If 
10e10 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65  the pointer size
10e20 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10e30 20 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c       is 32-bits,
10e40 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
10e50 72 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e  rchitecture cann
10e60 6f 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a  ot be "AMD64"...
10e70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10e80 20 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c     In that case,
10e90 20 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63   we are almost c
10ea0 65 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67  ertainly hitting
10eb0 20 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20   a bug in the.. 
10ec0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
10ed0 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74    operating syst
10ee0 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c  em and/or Visual
10ef0 20 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75   Studio that cau
10f00 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ses the..       
10f10 20 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43     //       PROC
10f20 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
10f30 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  RE environment v
10f40 61 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61  ariable to conta
10f50 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
10f60 20 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67    //       wrong
10f70 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63   value in some c
10f80 69 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50  ircumstances.  P
10f90 6c 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74  lease refer to t
10fa0 69 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20  icket..         
10fb0 20 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38   //       [9ac98
10fc0 36 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68  62611] for furth
10fd0 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d  er information..
10fe0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
10ff0 20 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e           if ((In
11000 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a  tPtr.Size == siz
11010 65 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20  eof(int)) &&..  
11020 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
11030 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73  ng.Equals(proces
11040 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
11050 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20   "AMD64",..     
11060 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
11070 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
11080 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
11090 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
110a0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
110b0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
110c0 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
110d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
110e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
110f0 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73   When tracing is
11100 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74   enabled, save t
11110 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65  he originally de
11120 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20  tected..        
11130 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
11140 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
11150 63 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61  cture before cha
11160 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20  nging it...     
11170 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11180 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
11190 67 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72  g savedProcessor
111a0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70  Architecture = p
111b0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
111c0 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ture;..#endif...
111d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
111e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
111f0 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f   // NOTE: We kno
11200 77 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67  w that operating
11210 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65   systems that re
11220 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d  turn "AMD64" as.
11230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
11240 2f 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63  /       the proc
11250 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
11260 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20  re are actually 
11270 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20  a superset of.. 
11280 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
11290 20 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20        the "x86" 
112a0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
112b0 65 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72  ecture; therefor
112c0 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20  e, return..     
112d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
112e0 20 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65    "x86" when the
112f0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73   pointer size is
11300 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20   32-bits...     
11310 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11320 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
11330 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
11340 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66   = "x86";....#if
11350 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
11360 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
11370 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
11380 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11390 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
113a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
113b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113c0 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74   // NOTE: Show t
113d0 68 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69  hat we hit a fai
113e0 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75  rly unusual situ
113f0 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20  ation (i.e...   
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11410 2f 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f  /       the "wro
11420 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ng" processor ar
11430 63 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64  chitecture was d
11440 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20  etected)...     
11450 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
11460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11470 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
11480 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
11490 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
114a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114b0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
114c0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
114d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
114e0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
114f0 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
11500 64 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d  der detected {0}
11510 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b  -bit pointer " +
11520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11530 20 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69          "size wi
11540 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  th processor arc
11550 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c  hitecture \"{1}\
11560 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20  ", using " +..  
11570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11580 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61      "processor a
11590 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32  rchitecture \"{2
115a0 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c  }\" instead...",
115b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
115c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53          IntPtr.S
115d0 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20  ize * 8 /* bits 
115e0 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73  */, savedProcess
115f0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
11600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11610 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
11620 41 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20  Architecture)); 
11630 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
11640 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11650 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
11660 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
11670 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11680 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
11690 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
116a0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
116b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73           }..#els
116c0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  e..          if 
116d0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
116e0 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
116f0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
11700 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
11710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11720 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
11730 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
11740 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f  work, attempt to
11750 20 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d   use the native.
11760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
11770 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50  /       Win32 AP
11780 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20  I function (via 
11790 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63  P/Invoke) that c
117a0 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20  an provide us.. 
117b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
117c0 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70        with the p
117d0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
117e0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
117f0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11800 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
11810 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11830 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
11840 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
11850 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65  he output of the
11860 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66   GetSystemInfo f
11870 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d  unction will be.
11880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11890 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63     //       plac
118a0 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74  ed here.  Only t
118b0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
118c0 68 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d  hitecture field.
118d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
118e0 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75     //       is u
118f0 73 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68  sed by this meth
11900 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
11910 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
11930 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
11940 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46  Win32.SYSTEM_INF
11950 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d  O systemInfo;...
11960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11970 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11980 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
11990 3a 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74  : Query the syst
119a0 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76  em information v
119b0 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75  ia P/Invoke, thu
119c0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
119d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69       //       fi
119e0 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74  lling the struct
119f0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
11a00 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
11a20 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
11a30 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d  sWin32.GetSystem
11a40 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49  Info(out systemI
11a50 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nfo);....       
11a60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
11a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a80 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
11a90 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
11aa0 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
11ab0 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
11ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ad0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
11ae0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
11af0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d  rArchitecture =.
11b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b10 20 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66         systemInf
11b20 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
11b30 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
11b40 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
11b50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11b60 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
11b70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11b90 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
11ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11bc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
11bd0 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20    // NOTE: Upon 
11be0 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20  failure, return 
11bf0 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e  an empty string.
11c00 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76    This will prev
11c10 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
11c20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
11c30 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66  calling method f
11c40 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20  rom considering 
11c50 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c  this method call
11c60 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
11c70 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c    //       "fail
11c80 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  ure"...         
11c90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11ca0 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
11cb0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53  Architecture = S
11cc0 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20  tring.Empty;..  
11cd0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
11ce0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
11cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11d40 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
11d50 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
11d60 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
11d70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
11dc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11dd0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65  ..      /// Give
11de0 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
11df0 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65  architecture, re
11e00 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f  turns the name o
11e10 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d  f the platform..
11e20 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
11e30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
11e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
11e50 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
11e60 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
11e70 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   The processor a
11e80 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62  rchitecture to b
11e90 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20  e translated to 
11ea0 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  a platform name.
11eb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
11ec0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
11ed0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
11ee0 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72   /// The platfor
11ef0 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73  m name for the s
11f00 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73  pecified process
11f10 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
11f20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  -OR- null..     
11f30 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f   /// if it canno
11f40 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
11f50 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
11f60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
11f70 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
11f80 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e  ing GetPlatformN
11f90 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
11fa0 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
11fb0 41 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20  Architecture /* 
11fc0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
11fd0 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
11fe0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
11ff0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12000 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12010 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
12020 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
12030 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
12040 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a  hitecture();....
12050 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
12060 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12070 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ty(processorArch
12080 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20  itecture))..    
12090 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
120a0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
120b0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
120c0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
120d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
120e0 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
120f0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
12100 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c  latforms == null
12110 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12120 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
12130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12140 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
12150 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  rmName;....     
12160 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
12170 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12180 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47  rePlatforms.TryG
12190 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121b0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
121c0 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66  cture, out platf
121d0 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ormName))..     
121e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
121f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12200 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  turn platformNam
12210 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12220 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
12230 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
12240 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
12250 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
12260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122a0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
122b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
122c0 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
122d0 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
122e0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
122f0 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73  y based on the s
12300 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20  pecified..      
12310 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e  /// directory an
12320 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
12330 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
12340 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12350 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
12360 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65  m name="baseDire
12370 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
12380 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
12390 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75  ctory to use, nu
123a0 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
123b0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
123c0 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry of..      ///
123d0 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
123e0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29  lication domain)
123f0 2e 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72  .  This director
12400 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  y should contain
12410 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
12420 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
12430 65 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20  ecture specific 
12440 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e  sub-directories.
12450 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
12460 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
12470 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
12480 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12490 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
124a0 54 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72  The requested pr
124b0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
124c0 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64  ture, null for d
124d0 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20  efault (the..   
124e0 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
124f0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
12500 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
12510 63 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c  cess).  This cal
12520 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ler should..    
12530 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77    /// almost alw
12540 61 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c  ays specify null
12550 20 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65   for this parame
12560 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
12570 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
12580 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12590 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  "nativeModuleFil
125a0 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
125b0 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65  // The candidate
125c0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66   native module f
125d0 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64  ile name to load
125e0 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20   will be stored 
125f0 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  here,..      ///
12600 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
12610 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
12620 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
12630 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
12640 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d  eModuleHandle">.
12650 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
12660 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
12670 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20  dle as returned 
12680 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77  by LoadLibrary w
12690 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20  ill be stored.. 
126a0 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69       /// here, i
126b0 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
126c0 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
126d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20   IntPtr.Zero if 
126e0 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20  the call to..   
126f0 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61     /// LoadLibra
12700 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20  ry fails...     
12710 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
12720 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
12730 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
12740 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61  n-zero if the na
12750 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20  tive module was 
12760 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75  loaded successfu
12770 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  lly; otherwise,.
12780 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
12790 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
127a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
127b0 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
127c0 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44  l PreLoadSQLiteD
127d0 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ll(..          s
127e0 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
127f0 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20  ory,            
12800 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
12810 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
12820 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12830 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
12840 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
12850 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ing nativeModule
12860 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74  FileName, /* out
12870 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
12880 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65  ef IntPtr native
12890 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20  ModuleHandle    
128a0 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
128b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
128c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
128d0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
128e0 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  : If the specifi
128f0 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  ed base director
12900 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  y is null, use t
12910 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20  he default..    
12920 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
12930 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20  i.e. attempt to 
12940 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
12950 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20  tect it)...     
12960 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
12970 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63     if (baseDirec
12980 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tory == null).. 
12990 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
129a0 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74  eDirectory = Get
129b0 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b  BaseDirectory();
129c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
129d0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
129e0 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
129f0 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62  d to query the b
12a00 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73  ase directory, s
12a10 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
12a20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12a30 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
12a40 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
12a50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12a60 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
12a70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12a80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65       // NOTE: De
12a90 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65  termine the base
12aa0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
12ab0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
12ac0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
12ad0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
12ae0 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f   this is not kno
12af0 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  wn by this class
12b00 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74  , we cannot cont
12b10 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  inue...         
12b20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
12b30 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e  tring fileNameOn
12b40 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69  ly = GetNativeLi
12b50 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
12b60 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
12b70 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e    if (fileNameOn
12b80 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
12b90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12ba0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
12bb0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12bc0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
12bd0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
12be0 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73  e library exists
12bf0 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72   in the base dir
12c00 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
12c10 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c    //       itsel
12c20 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  f, stop now...  
12c30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12c40 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
12c50 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
12c60 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
12c70 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
12c80 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
12c90 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
12ca0 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
12cb0 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
12cc0 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
12cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
12ce0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
12cf0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12d00 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
12d10 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
12d20 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
12d30 69 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c  itecture is null
12d40 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  , use the..     
12d50 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65       //       de
12d60 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20  fault...        
12d70 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12d80 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
12d90 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
12da0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12db0 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
12dc0 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f  tecture = GetPro
12dd0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12de0 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re();....       
12df0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12e00 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
12e10 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20  failed to query 
12e20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
12e30 63 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70  chitecture, stop
12e40 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
12e50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
12e60 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
12e70 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
12e80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12e90 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
12ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
12eb0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
12ec0 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
12ed0 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
12ee0 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
12ef0 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
12f00 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
12f10 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
12f20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
12f30 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20  tecture name... 
12f40 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12f50 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
12f60 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
12f70 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  me(MaybeCombineP
12f80 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ath(MaybeCombine
12f90 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20  Path(..         
12fa0 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
12fb0 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
12fc0 68 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65  hitecture), file
12fd0 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
12fe0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12ff0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13000 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  If the file name
13010 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72   based on the pr
13020 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
13030 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ture name..     
13040 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66       // is not f
13050 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20  ound, try using 
13060 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70  the associated p
13070 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
13080 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13090 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
130a0 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
130b0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
130c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
130d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
130e0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
130f0 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  t to translate t
13100 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
13110 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a  hitecture to a..
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13130 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20         platform 
13140 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
13150 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13160 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
13170 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74  atformName = Get
13180 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f  PlatformName(pro
13190 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
131a0 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  re);....        
131b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
131c0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
131d0 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
131e0 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
131f0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74  latform name, st
13200 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
13210 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
13220 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61           if (pla
13230 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c  tformName == nul
13240 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
13250 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
13260 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
13270 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13280 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13290 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
132a0 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
132b0 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
132c0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
132d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
132e0 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68  library using th
132f0 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  e platform name.
13300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13310 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
13320 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78    fileName = Fix
13330 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61  UpDllFileName(Ma
13340 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d  ybeCombinePath(M
13350 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
13360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13370 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
13380 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  y, platformName)
13390 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
133a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
133b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
133c0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
133d0 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
133e0 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
133f0 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
13400 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13410 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
13420 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
13430 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13450 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
13460 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13470 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
13480 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
13490 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
134a0 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
134b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
134c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
134d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
134e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13500 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63   NOTE: Show exac
13510 74 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65  tly where we are
13520 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
13530 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
13540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13550 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
13560 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
13570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13580 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13590 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
135a0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
135b0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
135c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
135d0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
135e0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
135f0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
13600 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
13610 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
13620 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20  oader is trying 
13630 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22  to load native "
13640 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
13650 20 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74            "SQLit
13660 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
13670 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29  "...", fileName)
13680 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
13690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
136a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
136b0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
136c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
136d0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
136e0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
136f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
13700 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13710 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13720 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
13730 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65  empt to load the
13740 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e   native library.
13750 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68    This will eith
13760 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
13770 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72    //       retur
13780 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65  n a valid native
13790 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20   module handle, 
137a0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
137b0 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro,..           
137c0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74     //       or t
137d0 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f  hrow an exceptio
137e0 6e 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73  n.  This must us
137f0 65 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  e the appropriat
13800 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
13810 20 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f   //       P/Invo
13820 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68  ke method for th
13830 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74  e current operat
13840 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20  ing system...   
13850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
13860 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
13870 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
13880 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  e = fileName;.. 
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
138a0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
138b0 3d 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48  = NativeLibraryH
138c0 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72  elper.LoadLibrar
138d0 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  y(fileName);....
138e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
138f0 74 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75  turn (nativeModu
13900 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  leHandle != IntP
13910 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
13920 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
13930 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
13940 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
13950 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
13960 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
13970 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
13980 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
13990 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
139a0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
139b0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
139c0 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
139d0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
139e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13a10 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13a20 20 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65   First, grab the
13a30 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f   last Win32 erro
13a40 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r number...     
13a50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
13a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a70 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72     int lastError
13a80 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61   = Marshal.GetLa
13a90 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20  stWin32Error(); 
13aa0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
13ad0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13ae0 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61  Show where we fa
13af0 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65  iled to load the
13b00 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
13b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
13b30 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69  ry from along wi
13b40 74 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72  th the Win32 err
13b50 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20  or code and..   
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13b70 2f 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f  /       exceptio
13b80 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  n information...
13b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ba0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13bb0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
13bc0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
13bd0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
13be0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
13bf0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
13c00 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
13c10 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
13c30 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
13c40 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
13c50 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22  to load native "
13c60 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
13c70 20 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74            "SQLit
13c80 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
13c90 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20  " (getLastError 
13ca0 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20  = {1}): {2}",.. 
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cc0 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c       fileName, l
13cd0 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f  astError, e)); /
13ce0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
13cf0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13d00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
13d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13d30 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
13d40 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
13d50 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
13d60 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13d70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
13d80 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lse;..      }..#
13d90 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20  endif..#endif.. 
13da0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13db0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e00 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
13e10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13e20 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ORK..    //..   
13e30 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
13e40 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
13e50 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74  amework, the nat
13e60 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ive interop asse
13e70 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f  mbly must..    /
13e80 2f 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20  /       be used 
13e90 62 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69  because it provi
13ea0 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b  des several work
13eb0 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20  arounds to .NET 
13ec0 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20  Compact..    // 
13ed0 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20        Framework 
13ee0 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f  limitations impo
13ef0 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72  rtant for proper
13f00 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68   operation of th
13f10 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20  e core..    //  
13f20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61       System.Data
13f30 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e  .SQLite function
13f40 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e  ality (e.g. bein
13f50 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a  g able to bind..
13f60 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72      //       par
13f70 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64  ameters and hand
13f80 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  le column values
13f90 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20   of types Int64 
13fa0 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20  and Double)...  
13fb0 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
13fc0 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
13fd0 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
13fe0 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 36  Lite.Interop.106
13ff0 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51  .dll";..#elif SQ
14000 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
14010 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
14020 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
14030 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
14040 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73  QLite library is
14050 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74   enabled, use it
14060 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
14070 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
14080 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
14090 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65  = "sqlite3";..#e
140a0 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f  lif USE_INTEROP_
140b0 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  DLL..    //..   
140c0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
140d0 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69  ise, if the nati
140e0 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f  ve SQLite intero
140f0 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e  p assembly is en
14100 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20  abled,..    //  
14110 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20       use it...  
14120 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
14130 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
14140 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
14150 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c  Lite.Interop.dll
14160 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f  ";..#else..    /
14170 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
14180 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20  Finally, assume 
14190 74 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d  that the mixed-m
141a0 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20  ode assembly is 
141b0 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20  being used...   
141c0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
141d0 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
141e0 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73  QLITE_DLL = "Sys
141f0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
14200 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dll";..#endif...
14210 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63  .    // This sec
14220 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f  tion uses intero
14230 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73  p calls that als
14240 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e  o fetch text len
14250 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  gth to optimize 
14260 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20  conversion...   
14270 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74   // When using t
14280 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c  he standard dll,
14290 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20   we can replace 
142a0 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68  these calls with
142b0 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63   normal sqlite c
142c0 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  alls and..    //
142d0 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20   do unoptimized 
142e0 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74  conversions inst
142f0 65 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a  ead afterwards..
14300 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
14310 72 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65  rop added textle
14320 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69  ngth calls....#i
14330 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
14340 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
14350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14360 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14370 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
14380 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
14390 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
143a0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
143b0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
143c0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
143d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
143e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
143f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14400 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14410 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
14420 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e  database_name_in
14430 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
14440 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
14450 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
14460 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14470 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14480 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14490 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
144a0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
144b0 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74  abase_name16_int
144c0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
144d0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
144e0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
144f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14500 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14520 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14530 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
14540 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  type_interop(Int
14550 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14560 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
14570 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14580 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14590 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
145a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
145b0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
145c0 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69  umn_decltype16_i
145d0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
145e0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
145f0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
14600 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14610 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14620 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14630 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
14640 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
14650 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
14660 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14670 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
14680 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14690 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
146a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
146b0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
146c0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
146d0 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
146e0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
146f0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
14700 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
14710 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14720 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
14730 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14740 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14750 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
14760 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
14770 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14780 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
14790 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
147a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
147b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
147c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
147d0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
147e0 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
147f0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14800 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14810 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
14820 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14830 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
14840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14850 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14860 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
14870 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  table_name_inter
14880 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
14890 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
148a0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
148b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
148c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
148d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
148e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
148f0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
14900 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
14910 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14920 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
14930 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
14940 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14950 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14960 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14970 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
14980 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72  olumn_text_inter
14990 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
149a0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
149b0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
149c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
149d0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
149e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
149f0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
14a00 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
14a10 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14a20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14a30 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
14a40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14a50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
14a60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14a70 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14a80 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f   sqlite3_errmsg_
14a90 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
14aa0 62 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  b, ref int len);
14ab0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14ac0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14ad0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14ae0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14af0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14b00 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65  te3_prepare_inte
14b10 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49  rop(IntPtr db, I
14b20 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
14b30 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50  nBytes, ref IntP
14b40 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74  tr stmt, ref Int
14b50 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72  Ptr ptrRemain, r
14b60 65 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b  ef int nRemain);
14b70 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14b80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14b90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14ba0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14bb0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14bc0 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
14bd0 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f  _metadata_intero
14be0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
14bf0 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
14c00 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
14c10 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20  [] colName, ref 
14c20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
14c30 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  pe, ref IntPtr p
14c40 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69  trCollSeq, ref i
14c50 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20  nt notNull, ref 
14c60 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
14c70 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c  ref int autoInc,
14c80 20 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20   ref int dtLen, 
14c90 72 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d  ref int csLen);.
14ca0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14cb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14cc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14cd0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14ce0 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
14cf0 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
14d00 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c  Ptr p, ref int l
14d10 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
14d20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14d30 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14d40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14d50 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
14d60 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65  alue_text16_inte
14d70 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
14d80 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
14d90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14da0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14db0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14dc0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
14dd0 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69  e3_malloc_size_i
14de0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29  nterop(IntPtr p)
14df0 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
14e00 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  _LOG..    [DllIm
14e10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14e20 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14e30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14e40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14e50 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67  lite3_config_log
14e60 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e  _interop();..#en
14e70 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  dif..#endif..// 
14e80 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
14e90 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
14ea0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
14eb0 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64  se functions add
14ec0 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69   existing functi
14ed0 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f  onality on top o
14ee0 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71  f SQLite and req
14ef0 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66  uire a little ef
14f00 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20  fort to..    // 
14f10 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e  get working when
14f20 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
14f30 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ard SQLite libra
14f40 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  ry...    #region
14f50 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66   interop added f
14f60 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a  unctionality....
14f70 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
14f80 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
14f90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14fa0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14fb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14fc0 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c  IntPtr interop_l
14fd0 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
14fe0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14ff0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15000 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15010 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
15020 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28  nterop_sourceid(
15030 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15040 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15050 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15060 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
15070 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c  t interop_compil
15080 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
15090 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
150a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
150b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
150c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
150d0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
150e0 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
150f0 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
15100 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15110 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15120 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15130 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15140 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15150 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65  lite3_close_inte
15160 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
15170 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15190 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
151a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
151b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
151c0 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
151d0 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  on_interop(IntPt
151e0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
151f0 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c  Name, int nArgs,
15200 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
15210 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
15220 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
15230 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
15240 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61  step, SQLiteFina
15250 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c  lCallback ffinal
15260 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65  , int needCollSe
15270 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  q);....    [DllI
15280 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15290 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
152a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
152b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
152c0 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f  qlite3_finalize_
152d0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
152e0 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
152f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15300 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
15310 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15320 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15330 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
15340 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49  finish_interop(I
15350 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
15360 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15370 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
15380 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15390 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
153a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
153b0 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74  3_blob_close_int
153c0 65 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62  erop(IntPtr blob
153d0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
153e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
153f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15400 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15410 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15420 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72  lite3_open_inter
15430 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
15440 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76  lename, byte[] v
15450 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70  fsName, SQLiteOp
15460 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
15470 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c  s, int extFuncs,
15480 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b   ref IntPtr db);
15490 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
154a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
154b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
154c0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
154d0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
154e0 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72  te3_open16_inter
154f0 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
15500 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76  lename, byte[] v
15510 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70  fsName, SQLiteOp
15520 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
15530 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c  s, int extFuncs,
15540 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b   ref IntPtr db);
15550 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15570 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15580 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15590 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
155a0 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f  te3_reset_intero
155b0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
155c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
155d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
155e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
155f0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
15600 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69  qlite3_changes_i
15610 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
15620 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  );..#endif..// !
15630 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
15640 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
15650 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20  n....    // The 
15660 73 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c  standard api cal
15670 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66  l equivalents of
15680 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72   the above inter
15690 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72  op calls..    #r
156a0 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76  egion standard v
156b0 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72  ersions of inter
156c0 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a  op functions....
156d0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
156e0 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ARD....#if !PLAT
156f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15700 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15710 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15720 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15730 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15740 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15750 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15760 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15770 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15780 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15790 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
157a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
157b0 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29  close(IntPtr db)
157c0 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f  ;....#if !INTERO
157d0 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a  P_LEGACY_CLOSE..
157e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
157f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15800 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15810 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15840 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15850 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15860 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15870 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15880 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15890 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
158a0 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76   sqlite3_close_v
158b0 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a  2(IntPtr db); /*
158c0 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e   3.7.14+ */..#en
158d0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
158e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
158f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15900 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15910 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15920 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15930 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15940 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15950 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15960 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15970 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15980 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
15990 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
159a0 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
159b0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
159c0 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
159d0 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Args, int nType,
159e0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
159f0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
15a00 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  unc, SQLiteCallb
15a10 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74  ack fstep, SQLit
15a20 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
15a30 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21  final);....#if !
15a40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15a50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15a60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15a70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15a80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15a90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15aa0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15ab0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15ac0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15ad0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15ae0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15af0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15b00 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74  te3_finalize(Int
15b10 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
15b20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15b30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15b40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15b50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15b60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15b70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15b80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15b90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15ba0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15bb0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15bc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
15bd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
15be0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
15bf0 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b  nish(IntPtr back
15c00 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
15c10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15c20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15c30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15c40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15c50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15c60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15c70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15c80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15c90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15ca0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15cb0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15cc0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15cd0 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74  _reset(IntPtr st
15ce0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
15cf0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15d00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15d10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15d20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15d30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15d40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15d50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15d60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15d70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15d80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15d90 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
15da0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
15db0 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50  ameter_name(IntP
15dc0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
15dd0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
15de0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15df0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15e00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15e10 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15e20 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15e30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15e40 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15e50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15e60 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15e70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15e80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
15e90 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
15ea0 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74  atabase_name(Int
15eb0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15ec0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
15ed0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15ee0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15ef0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15f00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15f10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15f30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15f40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15f50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15f60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15f70 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15f80 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
15f90 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28  database_name16(
15fa0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15fb0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
15fc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15fd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15fe0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15ff0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16000 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16010 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16020 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16030 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16040 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
16050 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16060 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
16070 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
16080 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50  mn_decltype(IntP
16090 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
160a0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
160b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
160c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
160d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
160e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
160f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16100 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16110 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16120 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16130 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16140 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16150 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16160 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
16170 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72  ecltype16(IntPtr
16180 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16190 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
161a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
161b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
161c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
161d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
161e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
161f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16200 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16220 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16230 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16240 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16250 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
16260 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
16270 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
16280 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16290 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
162a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
162b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
162c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
162d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
162e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
162f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16300 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16310 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16320 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
16330 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
16340 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  lumn_name16(IntP
16350 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
16360 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
16370 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16380 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
163a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
163b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
163c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
163d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
163e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
163f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16400 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16410 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16420 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
16430 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  rigin_name(IntPt
16440 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
16450 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
16460 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16470 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16480 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16490 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
164a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
164b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
164c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
164d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
164e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
164f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16500 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
16510 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
16520 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  igin_name16(IntP
16530 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
16540 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
16550 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16560 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16570 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16580 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16590 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
165a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
165b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
165c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
165d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
165e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
165f0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16600 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
16610 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  able_name(IntPtr
16620 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16630 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16650 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16660 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16670 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16680 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16690 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
166a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
166b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
166c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
166d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
166e0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
166f0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
16700 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  le_name16(IntPtr
16710 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16720 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16730 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16740 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16750 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16770 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16780 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16790 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
167a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
167b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
167c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
167d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
167e0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
167f0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
16800 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
16810 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16820 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16830 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16840 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16850 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16860 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16870 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16880 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16890 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
168a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
168b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
168c0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
168d0 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50  lumn_text16(IntP
168e0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
168f0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
16900 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16910 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16920 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16930 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16940 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16950 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16960 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16970 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16980 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16990 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
169a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
169b0 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49  sqlite3_errmsg(I
169c0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
169d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
169e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
169f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16a00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16a10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16a20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16a30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16a40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16a50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16a60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16a70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
16a80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
16a90 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49  qlite3_prepare(I
16aa0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
16ab0 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65   pSql, int nByte
16ac0 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74  s, ref IntPtr st
16ad0 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  mt, ref IntPtr p
16ae0 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69  trRemain);....#i
16af0 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32  f USE_PREPARE_V2
16b00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16b10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16b20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16b30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16b40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16b50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16b60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16b70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16b80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16b90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16ba0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16bb0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
16bc0 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  de sqlite3_prepa
16bd0 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c  re_v2(IntPtr db,
16be0 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
16bf0 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e  t nBytes, ref In
16c00 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49  tPtr stmt, ref I
16c10 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29  ntPtr ptrRemain)
16c20 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
16c30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16c40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16c50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16c60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16c70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16c80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16c90 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16ca0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16cb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16cc0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16cd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16ce0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16cf0 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
16d00 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50  mn_metadata(IntP
16d10 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
16d20 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
16d30 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
16d40 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
16d50 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65   ptrDataType, re
16d60 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  f IntPtr ptrColl
16d70 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74  Seq, ref int not
16d80 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72  Null, ref int pr
16d90 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e  imaryKey, ref in
16da0 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23  t autoInc);....#
16db0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16dc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16dd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16de0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16df0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16e00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16e10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16e20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16e30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16e40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16e50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16e60 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
16e70 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72  alue_text(IntPtr
16e80 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
16e90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16ea0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16eb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16ec0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16ed0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16ee0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16ef0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16f00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16f10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16f20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16f30 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16f40 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
16f50 78 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d  xt16(IntPtr p);.
16f60 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ...#endif..    /
16f70 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  / SQLITE_STANDAR
16f80 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
16f90 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
16fa0 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ese functions ar
16fb0 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76  e custom and hav
16fc0 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  e no equivalent 
16fd0 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79  standard library
16fe0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
16ff0 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65   All of them are
17000 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22   "nice to haves"
17010 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61   and not necessa
17020 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61  rily "need to ha
17030 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69  ves"...    #regi
17040 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74  on no equivalent
17050 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64   standard method
17060 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
17070 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
17080 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17090 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
170a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
170b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
170c0 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73  e3_context_colls
170d0 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  eq_interop(IntPt
170e0 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69  r context, ref i
170f0 6e 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74  nt type, ref int
17100 20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65   enc, ref int le
17110 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
17120 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17130 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
17140 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
17150 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  nt sqlite3_conte
17160 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69  xt_collcompare_i
17170 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
17180 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31  ntext, byte[] p1
17190 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74  , int p1len, byt
171a0 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65  e[] p2, int p2le
171b0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
171c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
171d0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
171e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
171f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17200 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f  qlite3_cursor_ro
17210 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  wid_interop(IntP
17220 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72  tr stmt, int cur
17230 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f  sor, ref long ro
17240 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wid);....    [Dl
17250 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17260 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
17270 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17280 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17290 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
172a0 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72  olumn_info_inter
172b0 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
172c0 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79  te[] catalog, by
172d0 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20  te[] IndexName, 
172e0 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d  byte[] ColumnNam
172f0 65 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f  e, ref int sortO
17300 72 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e  rder, ref int on
17310 45 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74  Error, ref IntPt
17320 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66  r Collation, ref
17330 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a   int colllen);..
17340 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17350 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
17360 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17370 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
17380 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73  lite3_table_curs
17390 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  or_interop(IntPt
173a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20  r stmt, int db, 
173b0 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67  int tableRootPag
173c0 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f  e);....#endif../
173d0 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
173e0 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
173f0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  gion....    // S
17400 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c  tandard API call
17410 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20  s global across 
17420 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65  versions.  There
17430 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61   are a few insta
17440 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  nces of interop 
17450 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63  calls..    // sc
17460 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c  attered in here,
17470 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e   but they are on
17480 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50  ly active when P
17490 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
174a0 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c  RAMEWORK is decl
174b0 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69  ared...    #regi
174c0 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69  on standard sqli
174d0 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a  te api calls....
174e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
174f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17500 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17510 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17520 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17530 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17540 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17550 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17560 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17570 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17580 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17590 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
175a0 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d  libversion();...
175b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
175c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
175d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
175e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
175f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17600 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17610 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17620 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17630 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17640 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17650 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17660 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69  n int sqlite3_li
17670 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28  bversion_number(
17680 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17690 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
176a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
176b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
176c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
176d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
176e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
176f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17700 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17710 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17720 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17730 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
17740 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29  lite3_sourceid()
17750 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17760 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17770 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17780 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17790 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
177a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
177b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
177c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
177d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
177e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
177f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17800 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
17810 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
17820 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74  used(IntPtr zOpt
17830 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
17840 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17850 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17860 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17870 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17880 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17890 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
178a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
178b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
178c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
178d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
178e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
178f0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  r sqlite3_compil
17900 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20  eoption_get(int 
17910 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  N);....#if !PLAT
17920 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17930 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17940 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17950 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17960 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17970 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17980 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17990 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
179a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
179b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
179c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
179d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
179e0 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61  enable_shared_ca
179f0 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e  che(..        in
17a00 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
17a10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17a20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17a30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17a40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17a50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17a60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17a70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17a80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17a90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17aa0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17ab0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17ac0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17ad0 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f  qlite3_enable_lo
17ae0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
17af0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
17b00 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a  , int enable);..
17b10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17b20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17b40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17b50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17b60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17b70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17b80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17b90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17ba0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17bb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17bc0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17bd0 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f  de sqlite3_load_
17be0 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
17bf0 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62      IntPtr db, b
17c00 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20  yte[] fileName, 
17c10 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c  byte[] procName,
17c20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
17c30 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
17c40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17c50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17c60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17c70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17c80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17c90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17ca0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17cb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17cc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
17cd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17ce0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17cf0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17d00 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69  _overload_functi
17d10 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  on(IntPtr db, In
17d20 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20  tPtr zName, int 
17d30 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57  nArgs);....#if W
17d40 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41  INDOWS..#if !PLA
17d50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17d60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17d70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17d80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17d90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17da0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
17db0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
17dc0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
17dd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17de0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17df0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
17e00 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
17e10 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
17e20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
17e30 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
17e40 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74  directory" SQLit
17e50 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
17e60 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
17e70 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
17e80 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
17e90 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ws...    //..   
17ea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17eb0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
17ec0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
17ed0 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74  win32_set_direct
17ee0 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73  ory(uint type, s
17ef0 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d  tring value);...
17f00 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e  .#if !DEBUG // N
17f10 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22  OTE: Should be "
17f20 57 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45  WIN32HEAP && !ME
17f30 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c  MDEBUG"..#if !PL
17f40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17f50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
17f60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17f70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
17f80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17f90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17fa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17fb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17fc0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
17fd0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
17fe0 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
17ff0 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
18000 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
18010 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
18020 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
18030 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
18040 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
18050 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
18060 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
18070 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
18080 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
18090 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
180a0 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
180b0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
180c0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
180d0 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
180e0 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
180f0 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
18100 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
18110 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
18120 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
18130 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
18140 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18150 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18160 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18170 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
18180 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  heap();....#if !
18190 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
181a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
181b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
181c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
181d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
181e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
181f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18200 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18210 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18220 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
18230 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
18240 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74  e3_win32_compact
18250 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f  _heap" SQLite co
18260 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
18270 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
18280 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
18290 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77  ted on Windows w
182a0 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61  hen the Win32 na
182b0 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69  tive allocator i
182c0 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20  s in..    //    
182d0 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20     use (i.e. by 
182e0 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c  default, in "Rel
182f0 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20  ease" builds of 
18300 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
18310 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  te..    //      
18320 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61   only).  By defa
18330 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20  ult, in "Debug" 
18340 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
18350 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68  .Data.SQLite, th
18360 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
18370 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74  MEMDEBUG allocat
18380 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20  or is used...   
18390 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
183a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
183b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
183c0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f  sqlite3_win32_co
183d0 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75  mpact_heap(ref u
183e0 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23  int largest);..#
183f0 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
18400 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18410 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18420 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18430 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18440 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18450 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18460 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18470 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18480 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18490 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
184a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
184b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
184c0 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d  _malloc(int n);.
184d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
184e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
184f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18500 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18510 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18520 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18530 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18540 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18550 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18560 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18570 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18580 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18590 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74  e3_realloc(IntPt
185a0 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  r p, int n);....
185b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
185c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
185d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
185e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
185f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18610 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18630 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18640 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18660 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
18670 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  ee(IntPtr p);...
18680 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18690 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
186a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
186b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
186c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
186d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
186e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
186f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18700 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18710 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18720 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18730 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
18740 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  e sqlite3_open_v
18750 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  2(byte[] utf8Fil
18760 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  ename, ref IntPt
18770 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e  r db, SQLiteOpen
18780 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
18790 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29   byte[] vfsName)
187a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
187b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
187c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
187d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
187e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
187f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18800 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
18810 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
18820 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
18830 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18840 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
18850 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
18860 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
18870 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18880 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18890 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
188a0 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e  te3_open16(strin
188b0 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20  g fileName, ref 
188c0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
188d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
188e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
188f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18900 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18910 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18930 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18950 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18960 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18970 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18980 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74  void sqlite3_int
18990 65 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62  errupt(IntPtr db
189a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
189b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
189c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
189d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
189e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
189f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18a00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18a10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18a20 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
18a30 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
18a40 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72  ert_rowid(IntPtr
18a50 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d   db);..#endif...
18a60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18a70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18a80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18a90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18aa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18ab0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18ac0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18ad0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18ae0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18af0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18b00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18b10 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68  n int sqlite3_ch
18b20 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29  anges(IntPtr db)
18b30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18b40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18b50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18b60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18b70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18b80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18b90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
18ba0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18bb0 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
18bc0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
18bd0 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ed();..#endif...
18be0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18bf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18c00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18c10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18c20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18c30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18c40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
18c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18c60 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
18c70 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
18c80 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61  ter(int resetFla
18c90 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  g);..#endif....#
18ca0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18cb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18cc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18cd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18ce0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18cf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18d00 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18d10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18d20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18d30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18d40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18d50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18d60 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
18d70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
18d80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18d90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18da0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18db0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18dc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18dd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18de0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18df0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18e00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18e10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18e20 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18e30 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18e40 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74  busy_timeout(Int
18e50 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b  Ptr db, int ms);
18e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18f10 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18f20 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65  Code sqlite3_cle
18f30 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50  ar_bindings(IntP
18f40 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
18f50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18f60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18f70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18f80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18fb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18fc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18fd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18fe0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18ff0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19000 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19010 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
19020 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19030 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76   index, Byte[] v
19040 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
19050 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65   IntPtr nTransie
19060 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nt);....#if !PLA
19070 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19080 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
19090 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
190a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
190b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
190c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
190d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
190e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
190f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19100 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
19110 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
19120 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
19130 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
19140 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19160 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19190 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
191a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
191b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
191c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
191d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
191e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
191f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19200 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
19210 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
19220 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74  , int index, int
19230 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
19240 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
19250 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73   This really jus
19260 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33  t calls "sqlite3
19270 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65  _bind_int"; howe
19280 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
19290 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
192a0 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
192b0 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
192c0 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e  gned (32-bit) in
192d0 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
192e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
192f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19300 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19310 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
19320 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
19330 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c  _bind_int", Call
19340 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19350 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19360 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19370 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19380 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
19390 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
193a0 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a  e3_bind_int")]..
193b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
193c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
193d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
193e0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
193f0 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  uint(IntPtr stmt
19400 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e  , int index, uin
19410 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
19420 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19430 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19440 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19450 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19460 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19470 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19480 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
19490 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
194a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
194b0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
194c0 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
194d0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e  , int index, lon
194e0 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
194f0 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
19500 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
19510 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
19520 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
19530 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
19540 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
19550 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
19560 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
19570 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
19580 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
19590 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
195a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
195b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
195c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
195d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
195e0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
195f0 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
19600 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19610 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19620 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
19630 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19640 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
19650 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
19660 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
19670 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19680 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
19690 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
196a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
196b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
196c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
196d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
196e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
196f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19700 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19710 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19720 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19730 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19740 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19750 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19760 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28  lite3_bind_null(
19770 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19780 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
19790 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
197a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
197b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
197c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
197d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
197e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
197f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19810 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19820 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19830 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19840 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19850 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49  ite3_bind_text(I
19860 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
19870 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61  index, byte[] va
19880 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
19890 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
198a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
198b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
198c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
198d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
198e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
198f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19900 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19910 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19920 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19930 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19940 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19950 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
19960 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
19970 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  r_count(IntPtr s
19980 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
19990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
199a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
199b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
199c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
199d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
199e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
199f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19a00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19a10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19a30 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
19a40 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
19a50 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74  eter_index(IntPt
19a60 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73  r stmt, byte[] s
19a70 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  trName);....#if 
19a80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19a90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19aa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19ab0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19ac0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19ad0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19ae0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19af0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19b00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19b10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19b20 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
19b30 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
19b40 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
19b50 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
19b60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19b70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19b80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19b90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19ba0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19bb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19bc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19bd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19be0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
19bf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19c00 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
19c10 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
19c20 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74  step(IntPtr stmt
19c30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19c40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19c50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19c60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19c70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19c80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19c90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19ca0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19cb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19cc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19cd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19ce0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
19cf0 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
19d00 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f  (IntPtr stmt); /
19d10 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23  * 3.7.4+ */....#
19d20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19d30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19d40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19d50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19d60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19d70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19d80 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
19d90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19da0 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
19db0 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65  e3_column_double
19dc0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
19dd0 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69  t index);..#endi
19de0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
19df0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19e00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19e10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19e20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19e30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19e40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19e50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19e60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19e70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19e80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19e90 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
19ea0 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74  3_column_int(Int
19eb0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
19ec0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
19ed0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19ee0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19ef0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19f00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19f10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19f30 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19f40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
19f50 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ng sqlite3_colum
19f60 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  n_int64(IntPtr s
19f70 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
19f80 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
19f90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19fa0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19fb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19fc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19fd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19fe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19ff0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a000 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a010 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a020 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a030 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a040 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1a050 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  mn_blob(IntPtr s
1a060 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1a070 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a080 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a090 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a0a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a0b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a0c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a0d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a0e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a0f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a100 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a110 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a120 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1a130 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e  _column_bytes(In
1a140 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1a150 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1a160 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a170 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a180 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a190 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a1a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a1b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a1c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a1d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a1e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a1f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a200 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1a210 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
1a220 74 65 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d  tes16(IntPtr stm
1a230 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1a240 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a250 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a260 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a270 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a280 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a290 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a2a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a2b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a2c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a2d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a2e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a2f0 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
1a300 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
1a310 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
1a320 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1a330 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a340 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a350 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a360 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1a370 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1a380 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a390 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1a3a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a3b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1a3c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1a3d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a3e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a3f0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
1a400 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72  collation(IntPtr
1a410 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
1a420 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  ame, int nType, 
1a430 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
1a440 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66  QLiteCollation f
1a450 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  unc);....#if !PL
1a460 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a470 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a480 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a490 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a4a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a4b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a4c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a4d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a4e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a4f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a500 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1a510 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
1a520 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e  count(IntPtr con
1a530 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
1a540 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a550 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a560 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a570 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a580 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a590 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a5a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a5b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a5c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a5d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a5e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1a5f0 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
1a600 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d  blob(IntPtr p);.
1a610 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a620 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a630 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a640 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a650 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a660 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a670 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a680 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a690 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a6a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a6b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a6c0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1a6d0 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50  value_bytes(IntP
1a6e0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
1a6f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a700 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a710 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a720 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a730 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a740 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a750 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a770 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a780 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a790 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1a7a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
1a7b0 65 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d  es16(IntPtr p);.
1a7c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a7d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a7e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a7f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a800 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a810 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a820 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1a830 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a840 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73   extern double s
1a850 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
1a860 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ble(IntPtr p);..
1a870 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1a880 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a890 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a8a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a8b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a8c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a8d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a8e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a8f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a900 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a910 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a920 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1a930 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
1a940 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1a950 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a960 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a970 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a980 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a990 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a9a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a9b0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1a9c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a9d0 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
1a9e0 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
1a9f0 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d  Ptr p);..#endif.
1aa00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1aa10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1aa20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1aa30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1aa40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1aa50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1aa60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1aa70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1aa80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aa90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1aaa0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1aab0 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
1aac0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
1aad0 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ype(IntPtr p);..
1aae0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1aaf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ab00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ab10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ab20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ab30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ab40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ab50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ab60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ab70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ab80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ab90 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1aba0 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50  result_blob(IntP
1abb0 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
1abc0 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53  [] value, int nS
1abd0 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65  ize, IntPtr pvRe
1abe0 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
1abf0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ac00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ac10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ac20 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ac30 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ac40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ac50 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1ac60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ac70 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1ac80 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50  sult_double(IntP
1ac90 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62  tr context, doub
1aca0 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
1acb0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1acc0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1acd0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ace0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1acf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ad00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ad10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ad20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ad30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ad40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ad50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ad60 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1ad70 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1ad80 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1ad90 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20   byte[] strErr, 
1ada0 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
1adb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1adc0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1add0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ade0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1adf0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ae00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ae10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ae20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ae30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ae40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ae50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1ae60 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1ae70 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e  lt_error_code(In
1ae80 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51  tPtr context, SQ
1ae90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61  LiteErrorCode va
1aea0 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
1aeb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1aec0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1aed0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1aee0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1aef0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1af00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1af10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1af20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1af30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1af40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1af50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1af60 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1af70 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74  ror_toobig(IntPt
1af80 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
1af90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1afa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1afb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1afc0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1afd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1afe0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1aff0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b010 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b020 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b030 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b040 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1b050 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28  ult_error_nomem(
1b060 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
1b070 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b080 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b090 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b0a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b0b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b0c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b0d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b0e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b0f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b100 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b110 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b120 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1b130 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49  3_result_value(I
1b140 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49  ntPtr context, I
1b150 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d  ntPtr value);...
1b160 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b170 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b180 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b190 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b1a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b1b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b1c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b1d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b1e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b1f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b200 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b210 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1b220 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49  esult_zeroblob(I
1b230 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
1b240 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
1b250 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b260 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b270 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b280 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1b290 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b2a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b2b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1b2c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b2d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1b2e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1b2f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1b300 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1b310 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e  t_int(IntPtr con
1b320 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29  text, int value)
1b330 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b340 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b350 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b360 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b370 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b380 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b390 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
1b3a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b3b0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1b3c0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
1b3d0 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t64(IntPtr conte
1b3e0 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  xt, long value);
1b3f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1b400 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b410 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b420 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b430 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b440 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b450 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b460 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b470 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b480 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b490 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b4a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1b4b0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1b4c0 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e  _null(IntPtr con
1b4d0 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
1b4e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b4f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b500 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b510 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b520 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b530 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b540 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b560 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b580 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1b590 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
1b5a0 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
1b5b0 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
1b5c0 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
1b5d0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1b5e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b5f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b600 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b610 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b620 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b630 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b640 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b650 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b670 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b680 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b690 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1b6a0 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
1b6b0 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  text(IntPtr cont
1b6c0 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29  ext, int nBytes)
1b6d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b6e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b6f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b700 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b710 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b720 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b730 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1b740 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1b750 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1b760 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b770 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1b780 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1b790 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1b7a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b7b0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1b7c0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1b7d0 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
1b7e0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1b7f0 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76   index, string v
1b800 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
1b810 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
1b820 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
1b830 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b840 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b850 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b860 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b870 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b880 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
1b890 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1b8a0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
1b8b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b8c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
1b8d0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
1b8e0 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
1b8f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1b900 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1b910 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1b920 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72  t_error16(IntPtr
1b930 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67   context, string
1b940 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c   strName, int nL
1b950 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
1b960 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b970 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1b980 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b990 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1b9a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1b9b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
1b9c0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
1b9d0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
1b9e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b9f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ba00 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1ba10 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
1ba20 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ba30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1ba40 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1ba50 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  lt_text16(IntPtr
1ba60 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67   context, string
1ba70 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c   strName, int nL
1ba80 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
1ba90 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49  erved);....#if I
1baa0 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20  NTEROP_CODEC || 
1bab0 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f  INTEROP_INCLUDE_
1bac0 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  SEE..#if !PLATFO
1bad0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1bae0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1baf0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1bb00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1bb10 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1bb20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1bb30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1bb40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1bb50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1bb60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1bb70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1bb80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
1bb90 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
1bba0 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
1bbb0 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
1bbc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bbd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bbe0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bbf0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bc00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bc10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bc20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bc30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bc40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bc50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bc60 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1bc70 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1bc80 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
1bc90 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
1bca0 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
1bcb0 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  dif....#if INTER
1bcc0 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46  OP_INCLUDE_ZIPVF
1bcd0 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  S..#if !PLATFORM
1bce0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1bcf0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1bd00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1bd10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1bd20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1bd30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1bd40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1bd50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bd60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1bd70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bd80 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
1bd90 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66  nit_v2();....#if
1bda0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1bdb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1bdc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bdd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1bde0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1bdf0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1be00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1be10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1be20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1be30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1be40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1be50 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33  id zipvfsInit_v3
1be60 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a  (int regDflt);..
1be70 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1be80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1be90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bea0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1beb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bec0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bed0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bee0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1bef0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bf00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1bf10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1bf20 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1bf30 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73  sqlite3_progress
1bf40 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20  _handler(IntPtr 
1bf50 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c  db, int ops, SQL
1bf60 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62  iteProgressCallb
1bf70 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
1bf80 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
1bf90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1bfa0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1bfb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bfc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1bfd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1bfe0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1bff0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c000 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c010 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c020 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c030 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c040 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74  tPtr sqlite3_set
1c050 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50  _authorizer(IntP
1c060 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74  tr db, SQLiteAut
1c070 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20  horizerCallback 
1c080 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
1c090 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
1c0a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c0b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c0c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c0d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c0e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c0f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c100 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c110 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c120 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c130 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c140 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c150 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f   sqlite3_update_
1c160 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
1c170 53 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c  SQLiteUpdateCall
1c180 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1c190 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1c1a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c1b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c1c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c1d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c1e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c1f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c200 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c210 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c220 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1c230 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c240 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c250 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1c260 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  mmit_hook(IntPtr
1c270 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69   db, SQLiteCommi
1c280 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  tCallback func, 
1c290 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
1c2a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c2b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c2c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c2d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c2e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c2f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c300 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c310 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c320 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c330 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c340 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c350 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1c360 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20  e3_trace(IntPtr 
1c370 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43  db, SQLiteTraceC
1c380 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
1c390 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
1c3a0 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
1c3b0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74  lite3_config() t
1c3c0 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20  akes a variable 
1c3d0 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77  argument list, w
1c3e0 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f  e have to overlo
1c3f0 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d  ad declarations.
1c400 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20  .    // for all 
1c410 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74  possible calls t
1c420 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75  hat we want to u
1c430 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  se...#if !PLATFO
1c440 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c450 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c460 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c470 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
1c480 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
1c490 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c4a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c4b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c4c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c4d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c4e0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
1c4f0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
1c500 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c510 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c520 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c530 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
1c540 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f  ig_none(SQLiteCo
1c550 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b  nfigOpsEnum op);
1c560 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c580 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1c5a0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1c5b0 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
1c5c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c5d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c5e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c5f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c600 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1c610 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1c620 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
1c630 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c640 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c650 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c660 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
1c670 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66  g_int(SQLiteConf
1c680 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e  igOpsEnum op, in
1c690 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
1c6a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c6b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c6c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c6d0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
1c6e0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
1c6f0 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
1c700 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c710 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c720 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c730 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c740 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
1c750 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
1c760 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
1c770 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c780 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c790 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c7a0 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53  te3_config_log(S
1c7b0 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e  QLiteConfigOpsEn
1c7c0 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67  um op, SQLiteLog
1c7d0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
1c7e0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
1c7f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c800 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c810 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c820 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1c830 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1c840 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43  e3_db_config", C
1c850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c860 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c870 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c880 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c890 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c8a0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
1c8b0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
1c8c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c8d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c8e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1c8f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64  orCode sqlite3_d
1c900 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66  b_config_int_ref
1c910 69 6e 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53  int(IntPtr db, S
1c920 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73  QLiteConfigDbOps
1c930 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c  Enum op, int val
1c940 75 65 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75  ue, ref int resu
1c950 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  lt);....#if !PLA
1c960 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c970 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c980 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c990 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c9a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c9b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c9c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c9d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c9e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c9f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ca00 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1ca10 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
1ca20 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
1ca30 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
1ca40 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
1ca50 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
1ca60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ca70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ca80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ca90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1caa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1cab0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1cac0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1cad0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cae0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1caf0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1cb00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cb10 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1cb20 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
1cb30 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
1cb40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cb50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cb60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cb70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1cb80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1cb90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1cba0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1cbb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cbc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1cbd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cbe0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cbf0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cc00 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
1cc10 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
1cc20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1cc30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cc40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cc50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cc60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cc70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1cc80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cc90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1cca0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ccb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ccc0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ccd0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1cce0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
1ccf0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1cd00 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
1cd10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1cd20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1cd30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cd40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1cd50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1cd60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cd70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1cd80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cd90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1cda0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cdb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cdc0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f   int sqlite3_db_
1cdd0 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20  readonly(IntPtr 
1cde0 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
1cdf0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1ce00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ce10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ce20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ce30 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1ce40 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
1ce50 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  ame", CallingCon
1ce60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ce70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ce80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ce90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cea0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1ceb0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
1cec0 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e  filename")]..#en
1ced0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cee0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cef0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
1cf00 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73  b_filename_bytes
1cf10 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
1cf20 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  [] dbName);....#
1cf30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1cf40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1cf50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cf60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1cf70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1cf80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1cf90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1cfa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cfb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1cfc0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cfd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cfe0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
1cff0 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
1d000 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
1d010 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d020 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d030 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d040 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d050 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d060 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d070 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1d080 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1d090 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d0a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1d0b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d0c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1d0d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
1d0e0 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ec(IntPtr db, by
1d0f0 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74  te[] strSql, Int
1d100 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20  Ptr pvCallback, 
1d110 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20  IntPtr pvParam, 
1d120 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73  ref IntPtr errMs
1d130 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
1d140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d150 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d170 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d180 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d190 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d1a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d1b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d1c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d1d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d1e0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1d1f0 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
1d200 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d  ry(int nBytes);.
1d210 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d220 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d230 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d240 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d250 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d260 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d270 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d280 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d290 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d2a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d2b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d2c0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1d2d0 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49  get_autocommit(I
1d2e0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
1d2f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d300 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d320 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d330 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d350 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d360 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d370 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d380 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d390 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d3a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d3b0 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
1d3c0 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74  result_codes(Int
1d3d0 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66  Ptr db, int onof
1d3e0 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  f);....#if !PLAT
1d3f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d400 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d410 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d420 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d430 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d440 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d450 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d470 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d480 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d490 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d4a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d4b0 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
1d4c0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
1d4d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d4e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d4f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d500 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d510 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d520 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d530 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d540 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d550 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d560 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d570 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d580 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d590 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
1d5a0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
1d5b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d5c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d5d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d5e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d5f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d610 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d630 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d640 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d660 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1d670 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72  errstr(SQLiteErr
1d680 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33  orCode rc); /* 3
1d690 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20  .7.15+ */....   
1d6a0 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
1d6b0 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20  3_log() takes a 
1d6c0 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e  variable argumen
1d6d0 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20  t list, we have 
1d6e0 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c  to overload decl
1d6f0 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  arations..    //
1d700 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
1d710 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f  e calls.  For no
1d720 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65  w, we are only e
1d730 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65  xposing a single
1d740 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20   string, and..  
1d750 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74    // depend on t
1d760 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72  he caller to for
1d770 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d  mat the string..
1d780 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d790 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d7a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d7b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d7c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d7d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d7e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d7f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d800 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d810 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d820 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d830 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
1d840 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  og(SQLiteErrorCo
1d850 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74  de iErrCode, byt
1d860 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d  e[] zFormat);...
1d870 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d880 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d890 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d8a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d8b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d8c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d8d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d8e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d8f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d900 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d910 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d920 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1d930 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63  e sqlite3_file_c
1d940 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62  ontrol(IntPtr db
1d950 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65  , byte[] zDbName
1d960 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72  , int op, IntPtr
1d970 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21   pArg);....#if !
1d980 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d990 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d9a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d9b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d9c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d9d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d9e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d9f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1da00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1da10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1da20 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1da30 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  tr sqlite3_backu
1da40 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65  p_init(IntPtr de
1da50 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65  stDb, byte[] zDe
1da60 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73  stName, IntPtr s
1da70 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20  ourceDb, byte[] 
1da80 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d  zSourceName);...
1da90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1daa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1dab0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1dac0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1dad0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1dae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1daf0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1db00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1db10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1db20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1db30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1db40 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1db50 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
1db60 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63  _step(IntPtr bac
1db70 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b  kup, int nPage);
1db80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1db90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dba0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dbb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dbc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dbd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dbe0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dbf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dc00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dc10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dc20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dc30 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1dc40 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e  _backup_remainin
1dc50 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  g(IntPtr backup)
1dc60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1dc70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dc80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1dc90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1dcb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1dcc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1dcd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1dce0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dcf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dd00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dd10 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1dd20 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75  3_backup_pagecou
1dd30 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  nt(IntPtr backup
1dd40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1dd50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1dd60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dd70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1dd80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dd90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1dda0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ddb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ddc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ddd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1dde0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ddf0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1de00 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1de10 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  lob_close(IntPtr
1de20 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21   blob);....#if !
1de30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1de40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1de50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1de60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1de70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1de80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1de90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1dea0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1deb0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1dec0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ded0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1dee0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74  sqlite3_blob_byt
1def0 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b  es(IntPtr blob);
1df00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1df10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1df20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1df30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1df40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1df50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1df60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1df70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1df80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1df90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dfa0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dfb0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1dfc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
1dfd0 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62  b_open(IntPtr db
1dfe0 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
1dff0 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
1e000 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
1e010 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74   long rowId, int
1e020 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50   flags, ref IntP
1e030 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a  tr ptrBlob);....
1e040 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e050 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e070 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e0a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e0b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e0c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e0d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e0e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e0f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e100 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65   sqlite3_blob_re
1e110 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  ad(IntPtr blob, 
1e120 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
1e130 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
1e140 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
1e150 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
1e160 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
1e170 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e180 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e190 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e1a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e1b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e1c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e1d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e1e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e1f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e200 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e210 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1e220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1e230 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65  lite3_blob_reope
1e240 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c  n(IntPtr blob, l
1e250 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23  ong rowId);....#
1e260 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e270 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e280 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e290 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e2a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e2b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e2c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e2d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e2e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e2f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e300 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e310 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e320 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69  sqlite3_blob_wri
1e330 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  te(IntPtr blob, 
1e340 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
1e350 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
1e360 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
1e370 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
1e380 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
1e390 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e3a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e3b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e3c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e3d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e3e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e3f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e400 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e410 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e420 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e430 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1e440 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1e450 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
1e460 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  ab(IntPtr db, In
1e470 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23  tPtr zSQL);....#
1e480 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e490 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e4a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e4b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e4c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e4d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e4e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e4f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e500 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e510 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e520 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e530 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
1e540 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f  printf(IntPtr fo
1e550 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29  rmat, __arglist)
1e560 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
1e570 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69  n....    // SQLi
1e580 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61  te API calls tha
1e590 74 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 62  t are provided b
1e5a0 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65  y "well-known" e
1e5b0 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d  xtensions that m
1e5c0 61 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79  ay be statically
1e5d0 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20  ..    // linked 
1e5e0 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
1e5f0 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72  core native libr
1e600 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e  ary currently in
1e610 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69   use...    #regi
1e620 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c  on extension sql
1e630 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23  ite api calls..#
1e640 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
1e650 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50  AL_TABLE..#if !P
1e660 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e670 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e690 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e6a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e6b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e6c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e6d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e6e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e6f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e700 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1e710 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
1e720 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
1e730 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  le(IntPtr db, In
1e740 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73  tPtr name, ref s
1e750 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f  qlite3_module mo
1e760 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c  dule, IntPtr pCl
1e770 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72  ientData, xDestr
1e780 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f  oyModule xDestro
1e790 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  y);....#if !PLAT
1e7a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e7b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e7c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e7d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e7e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e7f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e800 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e810 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e820 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e830 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e840 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1e850 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64  ite3_dispose_mod
1e860 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75  ule(IntPtr pModu
1e870 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  le);..#endif..  
1e880 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1e890 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e8e0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
1e8f0 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70  qlite interop ap
1e900 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f  i calls (.NET Co
1e910 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
1e920 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46  only)..#if PLATF
1e930 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e940 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
1e950 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44  STANDARD..    [D
1e960 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e970 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1e980 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e990 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
1e9a0 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
1e9b0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1e9c0 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  db, ref long row
1e9d0 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  Id);....    [Dll
1e9e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e9f0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1ea00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ea10 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d  void sqlite3_mem
1ea20 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70  ory_used_interop
1ea30 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29  (ref long bytes)
1ea40 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ea50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ea60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ea70 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1ea80 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
1ea90 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72  _highwater_inter
1eaa0 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  op(int resetFlag
1eab0 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  , ref long bytes
1eac0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1ead0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1eae0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1eaf0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1eb00 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1eb10 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
1eb20 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1eb30 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1eb40 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
1eb50 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
1eb60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1eb70 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1eb80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1eb90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1eba0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1ebb0 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
1ebc0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1ebd0 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75  x, ref long valu
1ebe0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
1ebf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ec00 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1ec10 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1ec20 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20  64_interop")].. 
1ec30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ec40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1ec50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1ec60 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e  3_bind_uint64_in
1ec70 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1ec80 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1ec90 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  f ulong value);.
1eca0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1ecb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ecc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ecd0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1ece0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1ecf0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
1ed00 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1ed10 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
1ed20 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
1ed30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ed40 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1ed50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ed60 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1ed70 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
1ed80 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1ed90 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1eda0 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
1edb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1edc0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1edd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ede0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1edf0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
1ee00 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
1ee10 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65  tr p, ref double
1ee20 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
1ee30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ee40 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1ee50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ee60 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1ee70 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74  _value_int64_int
1ee80 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
1ee90 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
1eea0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1eeb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1eec0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1eed0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1eee0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1eef0 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
1ef00 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
1ef10 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
1ef20 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ef30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ef40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ef50 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1ef60 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1ef70 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
1ef80 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
1ef90 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
1efa0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1efb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1efc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1efd0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1efe0 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
1eff0 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
1f000 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20  ule_interop(..  
1f010 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
1f020 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e   IntPtr name, In
1f030 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e  tPtr pModule, in
1f040 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65  t iVersion, xCre
1f050 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20  ate xCreate,..  
1f060 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78        xConnect x
1f070 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e  Connect, xBestIn
1f080 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20  dex xBestIndex, 
1f090 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
1f0a0 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20  connect,..      
1f0b0 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74    xDestroy xDest
1f0c0 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e  roy, xOpen xOpen
1f0d0 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c  , xClose xClose,
1f0e0 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72   xFilter xFilter
1f0f0 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74  ,..        xNext
1f100 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f   xNext, xEof xEo
1f110 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75  f, xColumn xColu
1f120 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49  mn, xRowId xRowI
1f130 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61  d, xUpdate xUpda
1f140 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65  te,..        xBe
1f150 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e  gin xBegin, xSyn
1f160 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74  c xSync, xCommit
1f170 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62   xCommit, xRollb
1f180 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a  ack xRollback,..
1f190 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e          xFindFun
1f1a0 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74  ction xFindFunct
1f1b0 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65  ion, xRename xRe
1f1c0 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74  name, xSavepoint
1f1d0 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20   xSavepoint,..  
1f1e0 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78        xRelease x
1f1f0 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61  Release, xRollba
1f200 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ckTo xRollbackTo
1f210 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  , IntPtr pClient
1f220 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78  Data,..        x
1f230 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44  DestroyModule xD
1f240 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
1f250 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50  #endif..    // P
1f260 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f270 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
1f280 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
1f290 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1f2a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f2f0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e  ...    #region N
1f300 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d  ative Delegates.
1f310 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
1f320 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
1f330 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f340 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f350 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1f360 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1f370 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f380 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1f390 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1f3a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f3b0 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20   xCreate(..     
1f3c0 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a     IntPtr pDb,..
1f3d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1f3e0 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Aux,..        in
1f3f0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1f400 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
1f410 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
1f420 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1f430 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
1f440 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  ror..    );.... 
1f450 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f4a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f4b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f4c0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1f4d0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1f4e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f4f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1f500 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1f510 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1f520 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28  orCode xConnect(
1f530 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1f540 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49   pDb,..        I
1f550 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
1f560 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
1f570 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
1f580 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
1f590 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
1f5a0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
1f5b0 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
1f5c0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1f5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f610 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1f620 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f630 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1f640 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1f650 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1f660 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f670 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1f680 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1f690 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
1f6a0 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
1f6b0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1f6c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1f6d0 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d   pIndex..    );.
1f6e0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f730 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1f740 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f750 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1f760 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1f770 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1f780 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f790 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1f7a0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1f7b0 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63  eErrorCode xDisc
1f7c0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
1f7d0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
1f7e0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f830 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1f840 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f850 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f860 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1f870 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1f880 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f890 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1f8a0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1f8b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f8c0 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20   xDestroy(..    
1f8d0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1f8e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1f8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1f940 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f950 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f960 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1f970 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1f980 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f990 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1f9a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1f9b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1f9c0 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20  ode xOpen(..    
1f9d0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1f9e0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
1f9f0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
1fa00 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1fa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1fa60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1fa70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1fa80 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1fa90 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1faa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1fab0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1fac0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1fad0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1fae0 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
1faf0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
1fb00 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1fb60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fb70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fb80 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1fb90 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1fba0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1fbb0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1fbc0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1fbd0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1fbe0 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20  ode xFilter(..  
1fbf0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
1fc00 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69  rsor,..        i
1fc10 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  nt idxNum,..    
1fc20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74      IntPtr idxSt
1fc30 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
1fc40 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
1fc50 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20  ntPtr argv..    
1fc60 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1fcc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fcd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1fce0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1fcf0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1fd00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fd10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1fd20 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1fd30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e  LiteErrorCode xN
1fd40 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ext(..        In
1fd50 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
1fd60 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1fdc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fdd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fde0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1fdf0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1fe00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1fe10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1fe20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1fe30 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20  int xEof(..     
1fe40 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
1fe50 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
1fe60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1fe70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe80 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1feb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fec0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fed0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1fee0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1fef0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ff00 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1ff10 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1ff20 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1ff30 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
1ff40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1ff50 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
1ff60 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
1ff70 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e  ..        int in
1ff80 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
1ff90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ffa0 2f 2f 2f 2f 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 0d 0a  //////////////..
1ffe0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1fff0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20000 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
20010 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
20020 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20030 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
20040 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
20050 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
20060 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a  orCode xRowId(..
20070 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
20080 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
20090 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
200a0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
20100 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20110 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20120 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
20130 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
20140 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20150 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
20160 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
20170 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
20180 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20  de xUpdate(..   
20190 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
201a0 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
201b0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
201c0 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
201d0 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
201e0 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  wId..    );.... 
201f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20240 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20250 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20260 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
20270 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
20280 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20290 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
202a0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
202b0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
202c0 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a  orCode xBegin(..
202d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
202e0 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
202f0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20340 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20350 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20360 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
20370 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
20380 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
20390 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
203a0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
203b0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
203c0 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a  rorCode xSync(..
203d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
203e0 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
203f0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20440 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20460 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
20470 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
20480 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
20490 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
204a0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
204b0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
204c0 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28  rorCode xCommit(
204d0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
204e0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
204f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20520 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
20550 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20560 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
20570 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
20580 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
20590 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
205a0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
205b0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
205c0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
205d0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ack(..        In
205e0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
205f0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
20600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20620 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
20650 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20660 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
20670 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
20680 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
20690 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
206a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
206b0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e  blic delegate in
206c0 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  t xFindFunction(
206d0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
206e0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
206f0 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20   int nArg,..    
20700 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65      IntPtr zName
20710 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53  ,..        ref S
20720 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61  QLiteCallback ca
20730 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
20740 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65   ref IntPtr pUse
20750 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rData..    );...
20760 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
20770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
207c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
207d0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
207e0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
207f0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
20800 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
20810 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
20820 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
20830 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65  rrorCode xRename
20840 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
20850 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
20860 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
20870 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
208a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
208d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
208e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
208f0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
20900 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
20910 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20920 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
20930 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
20940 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20950 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20   xSavepoint(..  
20960 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
20970 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
20980 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
20990 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
209f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20a00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
20a10 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
20a20 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
20a30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20a40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
20a50 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
20a60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
20a70 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
20a80 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
20a90 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
20aa0 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
20ab0 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
20b00 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
20b10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20b20 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
20b30 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
20b40 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
20b50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20b60 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
20b70 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
20b80 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
20b90 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
20ba0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
20bb0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
20bc0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
20bd0 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
20c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c20 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
20c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20c40 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
20c50 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
20c60 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
20c70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20c80 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
20c90 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78   delegate void x
20ca0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e  DestroyModule(In
20cb0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
20cc0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
20cd0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
20ce0 20 20 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 2f 2f 2f 2f  ////////////////
20d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20d30 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74  .    #region Nat
20d40 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a  ive Structures..
20d50 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
20d60 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b  UAL_TABLE..    [
20d70 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
20d80 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
20d90 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
20da0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
20db0 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d  3_module..    {.
20dc0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20dd0 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20  int iVersion;.. 
20de0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
20df0 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a  reate xCreate;..
20e00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
20e10 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74  Connect xConnect
20e20 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
20e30 63 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65  c xBestIndex xBe
20e40 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  stIndex;..      
20e50 20 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e    public xDiscon
20e60 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74  nect xDisconnect
20e70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
20e80 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74  c xDestroy xDest
20e90 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  roy;..        pu
20ea0 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e  blic xOpen xOpen
20eb0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
20ec0 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b  c xClose xClose;
20ed0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20ee0 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72   xFilter xFilter
20ef0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
20f00 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a  c xNext xNext;..
20f10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
20f20 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20  Eof xEof;..     
20f30 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d     public xColum
20f40 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  n xColumn;..    
20f50 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77 49      public xRowI
20f60 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20  d xRowId;..     
20f70 20 20 20 70 75 62 6c 69 63 20 78 55 70 64 61 74     public xUpdat
20f80 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20  e xUpdate;..    
20f90 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 67 69      public xBegi
20fa0 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20  n xBegin;..     
20fb0 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20     public xSync 
20fc0 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20  xSync;..        
20fd0 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78  public xCommit x
20fe0 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20  Commit;..       
20ff0 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
21000 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20  k xRollback;..  
21010 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69        public xFi
21020 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64  ndFunction xFind
21030 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20  Function;..     
21040 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d     public xRenam
21050 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20  e xRename;..    
21060 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f      /* The metho
21070 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20  ds above are in 
21080 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65  version 1 of the
21090 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d   sqlite3_module.
210a0 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65  .         * obje
210b0 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77  ct.  Those below
210c0 20 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e   are for version
210d0 20 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20   2 and greater. 
210e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
210f0 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  ic xSavepoint xS
21100 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20  avepoint;..     
21110 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61     public xRelea
21120 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20  se xRelease;..  
21130 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
21140 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61  llbackTo xRollba
21150 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ckTo;..    }....
21160 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
211b0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
211c0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
211d0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
211e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
211f0 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a  t sqlite3_vtab..
21200 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
21210 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f  ublic IntPtr pMo
21220 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  dule;..        p
21230 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20  ublic int nRef; 
21240 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45  /* NO LONGER USE
21250 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  D */..        pu
21260 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72  blic IntPtr zErr
21270 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  Msg;..    }.... 
21280 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
212d0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
212e0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
212f0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
21300 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
21310 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
21320 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  rsor..    {..   
21330 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
21340 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d  tr pVTab;..    }
21350 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
21360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21370 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
213b0 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
213c0 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
213d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
213e0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
213f0 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  dex_constraint..
21400 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
21410 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
21420 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d  dex_constraint(.
21430 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
21440 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
21450 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
21460 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
21470 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
21480 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
21490 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
214a0 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c  onstraint != nul
214b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
214c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
214d0 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e     iColumn = con
214e0 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b  straint.iColumn;
214f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21500 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e    op = constrain
21510 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  t.op;..         
21520 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20         usable = 
21530 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c  constraint.usabl
21540 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
21550 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20      iTermOffset 
21560 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65  = constraint.iTe
21570 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20  rmOffset;..     
21580 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21590 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
215f0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
21600 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  lumn;..        p
21610 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
21620 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70  xConstraintOp op
21630 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
21640 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a  c byte usable;..
21650 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
21660 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt iTermOffset;.
21670 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
21680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
216d0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
216e0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
216f0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
21700 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
21710 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
21720 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  y..    {..      
21730 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
21740 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d  _index_orderby(.
21750 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
21760 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20  iteIndexOrderBy 
21770 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  orderBy..       
21780 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
21790 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
217a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
217b0 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79       if (orderBy
217c0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
217d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
217e0 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d            iColum
217f0 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c  n = orderBy.iCol
21800 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
21810 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64        desc = ord
21820 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20  erBy.desc;..    
21830 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21840 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
21850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21890 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
218a0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
218b0 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e  olumn; /* Column
218c0 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20   number */..    
218d0 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
218e0 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20  desc;   /* True 
218f0 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
21900 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20   for ASC. */..  
21910 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
21920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21960 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
21970 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
21980 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
21990 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
219a0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
219b0 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
219c0 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a  t_usage..    {..
219d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
219e0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
219f0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a  straint_usage(..
21a00 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
21a10 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
21a20 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e  tUsage constrain
21a30 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20  tUsage..        
21a40 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
21a50 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
21a60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
21a70 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
21a80 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29  ntUsage != null)
21a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
21aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ab0 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e   argvIndex = con
21ac0 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67  straintUsage.arg
21ad0 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  vIndex;..       
21ae0 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20           omit = 
21af0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
21b00 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  omit;..         
21b10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
21b20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
21b80 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64  blic int argvInd
21b90 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f  ex; /* if >0, co
21ba0 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
21bb0 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
21bc0 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ter */..        
21bd0 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74  public byte omit
21be0 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20  ;     /* Do not 
21bf0 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20  code a test for 
21c00 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
21c10 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
21c20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21c70 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
21c80 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
21c90 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
21ca0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
21cb0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
21cc0 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  o..    {..      
21cd0 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a    /* Inputs */..
21ce0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
21cf0 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20  nt nConstraint; 
21d00 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74  /* Number of ent
21d10 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61  ries in aConstra
21d20 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  int */..        
21d30 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
21d40 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20  onstraint;..    
21d50 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
21d60 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e  OrderBy;    /* N
21d70 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
21d80 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d   in aOrderBy */.
21d90 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21da0 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b  IntPtr aOrderBy;
21db0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74  ..        /* Out
21dc0 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  puts */..       
21dd0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
21de0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b  ConstraintUsage;
21df0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
21e00 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20   int idxNum;    
21e10 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72         /* Number
21e20 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66   used to identif
21e30 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a  y the index */..
21e40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21e50 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20  tring idxStr;   
21e60 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20       /* String, 
21e70 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65  possibly obtaine
21e80 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d  d from sqlite3_m
21e90 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20  alloc */..      
21ea0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65    public int nee
21eb0 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f  dToFreeIdxStr; /
21ec0 2a 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73  * Free idxStr us
21ed0 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65  ing sqlite3_free
21ee0 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20  () if true */.. 
21ef0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
21f00 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t orderByConsume
21f10 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f  d;  /* True if o
21f20 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79  utput is already
21f30 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20   ordered */..   
21f40 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62       public doub
21f50 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  le estimatedCost
21f60 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63  ; /* Estimated c
21f70 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69  ost of using thi
21f80 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20  s index */..    
21f90 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20      public long 
21fa0 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20  estimatedRows;  
21fb0 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75   /* Estimated nu
21fc0 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74  mber of rows ret
21fd0 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  urned */..      
21fe0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
21ff0 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c 61  ndexFlags idxFla
22000 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53  gs; /* Mask of S
22010 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e  QLITE_INDEX_SCAN
22020 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20  _* flags */..   
22030 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67       public long
22040 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20   colUsed;       
22050 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b    /* Input: Mask
22060 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64   of columns used
22070 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f   by statement */
22080 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  ..    }..#endif.
22090 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
220a0 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69  .  }..  #endregi
220b0 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
220c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22100 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
22110 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  on .NET Compact 
22120 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29  Framework (only)
22130 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
22140 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46  Class..#if PLATF
22150 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22160 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  WORK..  internal
22170 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
22180 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a  CriticalHandle :
22190 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
221a0 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  {..    private b
221b0 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a  ool _isClosed;..
221c0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e      protected In
221d0 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a  tPtr handle;....
221e0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72      protected Cr
221f0 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74  iticalHandle(Int
22200 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  Ptr invalidHandl
22210 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a  eValue)..    {..
22220 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69        handle = i
22230 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
22240 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f  e;..      _isClo
22250 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  sed = false;..  
22260 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74    }....    ~Crit
22270 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20  icalHandle()..  
22280 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
22290 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
222a0 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
222b0 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d   void Cleanup().
222c0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
222d0 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20   (!IsClosed)..  
222e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
222f0 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20  his._isClosed = 
22300 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69  true;..        i
22310 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a  f (!IsInvalid)..
22320 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22330 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64       ReleaseHand
22340 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
22350 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
22360 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
22370 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
22380 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
22390 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28  blic void Close(
223a0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
223b0 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
223c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
223d0 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
223e0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
223f0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
22400 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
22410 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
22420 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
22430 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
22440 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e    {..      Clean
22450 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  up();..    }....
22460 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62      protected ab
22470 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65  stract bool Rele
22480 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  aseHandle();....
22490 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f      protected vo
224a0 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74  id SetHandle(Int
224b0 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  Ptr value)..    
224c0 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
224d0 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d  = value;..    }.
224e0 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
224f0 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e  id SetHandleAsIn
22500 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a  valid()..    {..
22510 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20        _isClosed 
22520 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47  = true;..      G
22530 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
22540 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d  ze(this);..    }
22550 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  ....    public b
22560 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20  ool IsClosed..  
22570 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
22580 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65   return _isClose
22590 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  d; }..    }.... 
225a0 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
225b0 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  ct bool IsInvali
225c0 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
225d0 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  get;..    }.... 
225e0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65   }..#endif..  #e
225f0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
22600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22650 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
22660 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
22670 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
22680 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61  Handles the unma
22690 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70  naged database p
226a0 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76  ointer, and prov
226b0 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
226c0 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72  n..    // suppor
226d0 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69  t for it...    i
226e0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
226f0 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65  lass SQLiteConne
22700 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72  ctionHandle : Cr
22710 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
22720 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
22730 53 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41  STANDARD && !PLA
22740 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22750 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
22760 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
22770 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e  e void CloseConn
22780 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d  ectionCallback(.
22790 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
227a0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
227b0 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20  dle hdl, IntPtr 
227c0 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  db);....        
227d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
227e0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43  CloseConnectionC
227f0 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e  allback closeCon
22800 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20  nection =..     
22810 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
22820 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
22830 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  n;..#endif....  
22840 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22890 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
228a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
228b0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
228c0 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
228d0 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
228e0 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
228f0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
22900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22940 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22950 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e  private bool own
22960 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Handle;....     
22970 20 20 20 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
229c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
229d0 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
229e0 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
229f0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
22a00 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20  dle db)..       
22a10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22a20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d  if (db != null).
22a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
22a40 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
22a50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
22a70 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74  ock (db.syncRoot
22a80 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
22a90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ab0 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64    return db.hand
22ac0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
22ad0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22ae0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
22af0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
22b00 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
22b10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
22b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22b70 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43  internal SQLiteC
22b80 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28  onnectionHandle(
22b90 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20  IntPtr db, bool 
22ba0 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
22bb0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f          : this(o
22bc0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
22bd0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
22be0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22bf0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
22c00 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
22c10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22c20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22c30 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77           this.ow
22c40 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e  nHandle = ownHan
22c50 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
22c60 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
22c70 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  db);..          
22c80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
22c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
22ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ce0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
22cf0 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
22d00 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c  ctionHandle(bool
22d10 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20   ownHandle)..   
22d20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
22d30 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
22d40 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
22d50 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
22d60 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61         if (ownHa
22d70 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
22d80 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
22d90 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
22da0 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65   DebugData.conne
22db0 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65  ctionCount);..#e
22dc0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
22dd0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
22de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
22e30 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
22e40 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
22e50 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
22e60 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
22e70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
22e90 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
22ea0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
22eb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22ec0 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e       if (!ownHan
22ed0 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65  dle) return true
22ee0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
22ef0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22f00 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
22f10 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
22f20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22f30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
22f40 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
22f50 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
22f60 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f80 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
22f90 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
22fa0 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
22fb0 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
22fc0 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
22fd0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
22fe0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
22ff0 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
23000 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c  Connection(this,
23010 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
23020 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
23030 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
23040 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
23050 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
23060 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
23070 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
23080 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
23090 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64  alHandle);..#end
230a0 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  if....#if !NET_C
230b0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
230c0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
230d0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
230e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
23100 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
23110 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
23120 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
23130 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
23140 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
23150 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
23160 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
23170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23180 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f   "CloseConnectio
23190 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  n: {0}", localHa
231a0 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
231b0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
231c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
231d0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
231e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
231f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23200 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
23210 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
23220 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
23230 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
23240 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23250 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
23260 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
23270 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
23280 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
23290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
232b0 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
232c0 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b  n(this, handle);
232d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
232e0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
232f0 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
23300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23310 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
23320 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
23330 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
23340 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
23350 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
23360 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
23370 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65   DebugData.conne
23380 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65  ctionCount);..#e
23390 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
233a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
233b0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
233c0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
233d0 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
233e0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
233f0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
23400 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
23410 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
23420 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
23430 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
23440 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
23450 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
23460 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
23470 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
23480 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
23490 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
234a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
234b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
234c0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
234d0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
234e0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
234f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23500 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
23510 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
23520 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
23530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23540 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
23550 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
23560 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
23570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23580 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
23590 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
235a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
235b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
235c0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
235d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
235e0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
235f0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
23600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
23610 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
23620 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
23630 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23640 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
23650 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
23660 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
23670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23690 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
236a0 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
236b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
236c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
236d0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
236e0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
236f0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
23700 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
23710 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
23720 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
23730 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23770 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
23780 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
23790 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
237a0 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
237b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
237c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
237d0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
237e0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
237f0 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  Data.connectionC
23800 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
23810 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
23820 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23870 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
23880 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20  ool OwnHandle.. 
23890 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
238a0 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
238b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
238c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
238d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
238e0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
238f0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
23900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23920 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23930 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
23940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
23950 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
23960 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23970 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
239c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
239d0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
239e0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
239f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
23a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
23a10 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
23a20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a40 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
23a50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
23a60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a80 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
23a90 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
23aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23ab0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
23ac0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
23ad0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23b20 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
23b30 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
23b40 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
23b50 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
23b60 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
23b70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23b80 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
23b90 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
23ba0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23bb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23bc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
23bd0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
23be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23bf0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
23c00 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
23c10 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
23c20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23c70 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
23c80 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
23c90 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
23ca0 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
23cb0 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
23cc0 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
23cd0 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a  te statements...
23ce0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
23cf0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
23d00 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
23d10 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
23d20 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
23d30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23d40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
23d50 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
23d60 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
23d70 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
23d80 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
23d90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23de0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
23df0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
23e00 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
23e10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23e60 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
23e70 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
23e80 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
23e90 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
23ea0 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20  Handle stmt)..  
23eb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23ec0 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d       if (stmt !=
23ed0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
23ee0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
23ef0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23f00 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
23f10 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74        lock (stmt
23f20 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
23f30 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
23f40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23f50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23f60 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a  n stmt.handle;..
23f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
23f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
23fa0 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
23fb0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
23fc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
24010 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
24020 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d  nal SQLiteStatem
24030 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  entHandle(SQLite
24040 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
24050 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d   cnn, IntPtr stm
24060 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
24070 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
24080 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
24090 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
240a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
240b0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
240c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
240d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
240e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
240f0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
24100 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
24110 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20  le(stmt);..     
24120 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24130 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
24140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24180 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24190 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
241a0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
241b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
241c0 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
241d0 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
241e0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
241f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
24200 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
24210 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
24220 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
24230 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
24240 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24290 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
242a0 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
242b0 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
242c0 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
242d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
242e0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
242f0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
24300 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24310 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
24320 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
24330 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
24340 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
24350 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24360 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
24370 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
24380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24390 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
243a0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
243b0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
243c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
243d0 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
243e0 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c  ement(cnn, local
243f0 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  Handle);....#if 
24400 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
24410 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
24420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24430 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
24440 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24450 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
24460 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
24470 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
24480 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
24490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244a0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
244b0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244d0 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
244e0 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c  Statement: {0}",
244f0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
24500 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
24510 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24530 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
24540 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24550 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
24560 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
24570 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
24580 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
24590 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
245a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245b0 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
245c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
245d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
245f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
24600 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
24610 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
24620 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
24630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24640 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
24650 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
24680 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
24690 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
246a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246b0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
246c0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
246d0 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
246e0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
246f0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
24700 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
24710 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
24720 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
24730 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
24740 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
24750 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
24760 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
24770 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
24780 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
24790 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
247a0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
247b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
247c0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
247d0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
247e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
247f0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
24800 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24820 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
24830 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
24840 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
24850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24860 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
24870 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
24880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24890 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
248a0 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c  eStatement: {0},
248b0 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
248c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
248d0 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
248e0 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
248f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
24900 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24910 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
24920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
24930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24940 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
24950 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24960 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
24970 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
24980 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
24990 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
249a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
249b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
249c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
249d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
249e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
249f0 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
24a00 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
24a10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
24a20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
24a30 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
24a40 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
24a50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
24a60 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
24a70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
24a80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ad0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
24ae0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
24af0 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
24b00 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
24b10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24b20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
24b30 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
24b40 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73  (ref DebugData.s
24b50 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d  tatementCount);.
24b60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
24b70 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
24b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
24bd0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
24be0 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
24bf0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
24c00 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
24c10 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
24c20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24c30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
24c40 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
24c50 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
24c60 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
24c70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24c80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
24c90 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
24ca0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
24cb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24cc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
24cd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24ce0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
24cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
24d30 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
24d40 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
24d50 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
24d60 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
24d70 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
24d80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24d90 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
24da0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
24db0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
24dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24dd0 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
24de0 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
24df0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24e00 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
24e10 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
24e20 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
24e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
24e80 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63  region SQLiteBac
24e90 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  kupHandle Class.
24ea0 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
24eb0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
24ec0 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
24ed0 67 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75  ged SQLite backu
24ee0 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20  p objects...    
24ef0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
24f00 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b  class SQLiteBack
24f10 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  upHandle : Criti
24f20 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
24f30 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
24f40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24f50 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
24f60 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
24f70 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
24f80 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
24f90 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fe0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
24ff0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43   private SQLiteC
25000 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
25010 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  cnn;....        
25020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25060 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
25070 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
25080 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
25090 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
250a0 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63  BackupHandle bac
250b0 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  kup)..        {.
250c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
250d0 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29  (backup != null)
250e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
250f0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
25100 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25120 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e  lock (backup.syn
25130 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25150 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61         return ba
25170 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  ckup.handle;..  
25180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
25190 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
251a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
251b0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
251c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
251d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
251e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
251f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25220 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
25230 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  l SQLiteBackupHa
25240 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
25250 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
25260 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d   IntPtr backup).
25270 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
25280 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
25290 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
252a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
252b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
252c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
252d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
252e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
252f0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
25300 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
25310 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
25320 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20  backup);..      
25330 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25340 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
253a0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42   private SQLiteB
253b0 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20  ackupHandle().. 
253c0 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
253d0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
253e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
253f0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
25400 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
25410 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
25420 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
25430 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
25440 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
25450 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
254b0 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
254c0 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
254d0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
254e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
254f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
25500 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25510 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25530 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
25540 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
25550 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
25560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25570 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
25580 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20  tr.Zero);....   
25590 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
255a0 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
255b0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
255c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255d0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
255e0 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c  ishBackup(cnn, l
255f0 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a  ocalHandle);....
25600 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
25610 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
25620 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
25630 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
25640 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25660 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
25670 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
25680 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
25690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256a0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
256b0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
256c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
256d0 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69             "Fini
256e0 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20  shBackup: {0}", 
256f0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
25700 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
25710 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
25730 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
25740 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25750 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
25760 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
25770 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
25780 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
25790 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
257a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257b0 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
257c0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
257d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
257f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
25800 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42  LiteBase.FinishB
25810 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c  ackup(cnn, handl
25820 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
25830 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
25840 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
25850 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
25860 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25870 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
25880 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
25890 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
258a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
258b0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
258c0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
258d0 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  ckupCount);..#en
258e0 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
258f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25900 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
25910 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
25920 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
25930 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
25940 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
25950 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
25960 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
25970 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
25980 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
25990 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
259a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
259b0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
259c0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
259d0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
259e0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
25a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25a10 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
25a20 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
25a30 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
25a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25a50 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
25a60 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
25a70 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
25a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
25a90 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
25aa0 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
25ab0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
25ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
25ad0 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
25ae0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
25af0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
25b00 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
25b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25b20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25b30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
25b40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
25b50 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
25b60 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
25b70 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
25b80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25ba0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
25bb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
25bc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25be0 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
25bf0 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
25c00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25c10 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
25c20 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
25c30 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
25c40 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
25c50 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
25c60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
25c70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
25c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
25cd0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
25ce0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
25cf0 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
25d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25d10 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
25d20 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
25d30 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
25d40 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
25d50 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
25d60 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
25d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25db0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25dc0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
25dd0 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
25de0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25df0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
25e00 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
25e10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25e20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
25e30 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
25e40 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
25e50 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
25e60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25e70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25e80 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
25e90 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
25ea0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
25eb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25ec0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25ed0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
25f20 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
25f30 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
25f40 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
25f50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
25f60 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
25f70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25f80 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
25f90 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
25fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25fc0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
25fd0 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
25fe0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25ff0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
26000 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
26010 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
26020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26060 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
26070 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62  egion SQLiteBlob
26080 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
26090 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
260a0 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
260b0 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
260c0 20 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a   SQLite blob obj
260d0 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
260e0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
260f0 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
26100 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
26110 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
26120 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26130 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
26140 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
26150 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
26160 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
26170 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
26180 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
261d0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
261e0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
261f0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
26200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
26210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
26260 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
26270 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
26280 74 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  tr(SQLiteBlobHan
26290 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  dle blob)..     
262a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
262b0 20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75    if (blob != nu
262c0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
262d0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
262e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
262f0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
26300 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79     lock (blob.sy
26310 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
26320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26330 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26340 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62          return b
26350 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  lob.handle;..   
26360 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26370 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26380 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26390 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
263a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
263b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
263c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26400 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
26410 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
26420 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
26430 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
26440 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20  tPtr blob)..    
26450 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
26460 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
26470 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
26480 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26490 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
264a0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
264b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264d0 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
264e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
264f0 20 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29   SetHandle(blob)
26500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
26510 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
26520 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26570 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
26580 65 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  e SQLiteBlobHand
26590 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
265a0 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
265b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
265c0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
265d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
265e0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
265f0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
26600 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d  ata.blobCount);.
26610 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
26620 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26670 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
26680 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
26690 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
266a0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
266b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
266c0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
266d0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
266e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
266f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
26700 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
26710 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
26720 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
26730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26740 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
26750 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
26760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26770 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
26780 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
26790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
267a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
267b0 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c  e.CloseBlob(cnn,
267c0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
267d0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
267e0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
267f0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26800 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
26810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26830 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
26840 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
26850 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
26860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26870 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
26880 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
26890 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
268a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
268b0 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c  oseBlob: {0}", l
268c0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
268d0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
268e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
268f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
26900 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
26910 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26920 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
26930 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
26940 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
26950 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
26960 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26980 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
26990 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
269a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
269c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
269d0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f  iteBase.CloseBlo
269e0 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  b(cnn, handle);.
269f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26a00 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
26a10 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
26a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
26a40 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
26a50 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
26a60 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
26a70 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
26a80 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
26a90 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
26aa0 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
26ab0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
26ac0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26ad0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
26ae0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
26af0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
26b00 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
26b10 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
26b20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
26b30 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
26b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
26b50 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
26b60 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
26b70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
26b80 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
26b90 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
26ba0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
26bb0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
26bc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
26be0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
26bf0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
26c00 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
26c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
26c30 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
26c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26c50 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42           "CloseB
26c60 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  lob: {0}, except
26c70 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
26c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c90 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
26ca0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
26cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26cd0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
26ce0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26cf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
26d00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
26d10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
26d20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
26d30 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
26d40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26d50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
26d60 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
26d70 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
26d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26d90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26da0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
26db0 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26de0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
26df0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
26e00 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
26e10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26e20 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
26e30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26e40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26e90 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
26ea0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
26eb0 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
26ec0 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
26ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
26ee0 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
26ef0 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
26f00 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e  bugData.blobCoun
26f10 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
26f20 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
26f30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26f80 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
26f90 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
26fa0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
26fb0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
26fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26fd0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
26fe0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
27000 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
27010 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
27020 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27040 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
27050 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
27060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27070 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
27080 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
27090 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
270a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
270e0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
270f0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
27100 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
27110 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
27120 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
27130 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
27150 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
27160 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
27170 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27180 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
27190 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
271a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
271b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
271c0 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
271d0 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a           ndregion..}..