System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a16bf0437608d988e13cb4a28f33e0e8476bb4e1:


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 43 6f 6e 73 74 61 6e 74  Private Constant
1da0: 73 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  s..      private
1db0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
1dc0: 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 20  splayNullObject 
1dd0: 3d 20 22 3c 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22  = "<nullObject>"
1de0: 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ;..      private
1df0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
1e00: 73 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e 67  splayEmptyString
1e10: 20 3d 20 22 3c 65 6d 70 74 79 53 74 72 69 6e 67   = "<emptyString
1e20: 3e 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  >";..      priva
1e30: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1e40: 44 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  DisplayStringFor
1e50: 6d 61 74 20 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b  mat = "\"{0}\"";
1e60: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f  ////////////////
1eb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
1ec0: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
1ed0: 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72  g DisplayNullArr
1ee0: 61 79 20 3d 20 22 3c 6e 75 6c 6c 41 72 72 61 79  ay = "<nullArray
1ef0: 3e 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  >";..      priva
1f00: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1f10: 44 69 73 70 6c 61 79 45 6d 70 74 79 41 72 72 61  DisplayEmptyArra
1f20: 79 20 3d 20 22 3c 65 6d 70 74 79 41 72 72 61 79  y = "<emptyArray
1f30: 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  >";....      ///
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f90: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68  private const ch
1fa0: 61 72 20 41 72 72 61 79 4f 70 65 6e 20 3d 20 27  ar ArrayOpen = '
1fb0: 5b 27 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  [';..      priva
1fc0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1fd0: 45 6c 65 6d 65 6e 74 53 65 70 61 72 61 74 6f 72  ElementSeparator
1fe0: 20 3d 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20   = ", ";..      
1ff0: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68  private const ch
2000: 61 72 20 41 72 72 61 79 43 6c 6f 73 65 20 3d 20  ar ArrayClose = 
2010: 27 5d 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ']';....      //
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2060: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2070: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2080: 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20  readonly char[] 
2090: 53 70 61 63 65 43 68 61 72 73 20 3d 20 7b 0d 0a  SpaceChars = {..
20a0: 20 20 20 20 20 20 20 20 20 20 27 5c 74 27 2c 20            '\t', 
20b0: 27 5c 6e 27 2c 20 27 5c 72 27 2c 20 27 5c 76 27  '\n', '\r', '\v'
20c0: 2c 20 27 5c 66 27 2c 20 27 20 27 0d 0a 20 20 20  , '\f', ' '..   
20d0: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 23 65 6e     };..      #en
20e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
20f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2140: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
2150: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
2160: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2170: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
2180: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
2190: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
21a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f   <see cref="isMo
21b0: 6e 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20  no" /> field... 
21c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
21d0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
21e0: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
21f0: 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63  ly object static
2200: 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  SyncRoot = new o
2210: 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  bject();....    
2220: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2270: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
2290: 20 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72   type is only pr
22a0: 65 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69  esent when runni
22b0: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ng on Mono...   
22c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22d0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
22e0: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
22f0: 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74   string MonoRunt
2300: 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e  imeType = "Mono.
2310: 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20  Runtime";....   
2320: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
2370: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65  >..      /// Kee
2390: 70 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74  ps track of whet
23a0: 68 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69  her we are runni
23b0: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69  ng on Mono.  Ini
23c0: 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20  tially null, it 
23d0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65  is..      /// se
23e0: 74 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  t by the <see cr
23f0: 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d  ef="IsMono" /> m
2400: 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72  ethod on its fir
2410: 73 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c  st call.  Later,
2420: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   it..      /// i
2430: 73 20 72 65 74 75 72 6e 65 64 20 76 65 72 62 61  s returned verba
2440: 74 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20  tim by the <see 
2450: 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e  cref="IsMono" />
2460: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2470: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2490: 61 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e  atic bool? isMon
24a0: 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  o = null;..     
24b0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
24c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2510: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2520: 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d  Private Methods.
2530: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2540: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2550: 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  Determines wheth
2560: 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61  er or not this a
2570: 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69  ssembly is runni
2580: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ng on Mono...   
2590: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
25b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
25c0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
25d0: 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72  is assembly is r
25e0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
25f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2600: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2610: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
2620: 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20   IsMono()..     
2630: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
2640: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2660: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
2670: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
2680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2690: 20 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f          if (isMo
26a0: 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  no == null)..   
26b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c0: 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70     isMono = (Typ
26d0: 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75  e.GetType(MonoRu
26e0: 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75  ntimeType) != nu
26f0: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
2700: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2710: 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a   (bool)isMono;..
2720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2730: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
2740: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2760: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
2770: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
2780: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2790: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
27a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
27b0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
27c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
27d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2810: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2820: 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73  Internal Methods
2830: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2850: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
2860: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
2870: 73 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e  ss is running on
2880: 20 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64   one of the Wind
2890: 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b  ows..      /// [
28a0: 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d  sub-]platforms..
28b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
28c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
28d0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
28e0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77    /// Non-zero w
28f0: 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57  hen running on W
2900: 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73  indows; otherwis
2910: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
2920: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2930: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
2940: 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e  tatic bool IsWin
2950: 64 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  dows()..      {.
2960: 0a 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66  .          Platf
2970: 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64  ormID platformId
2980: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f   = Environment.O
2990: 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72  SVersion.Platfor
29a0: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  m;....          
29b0: 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20  if ((platformId 
29c0: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
29d0: 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20  n32S) ||..      
29e0: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
29f0: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
2a00: 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20  D.Win32Windows) 
2a10: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
2a20: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
2a30: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
2a40: 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  2NT) ||..       
2a50: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
2a60: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
2a70: 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20  .WinCE))..      
2a80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a90: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2aa0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
2ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
2ac0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
2ad0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b20: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
2b30: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b40: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20    /// This is a 
2b50: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
2b60: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
2b70: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e  ee cref="String.
2b80: 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72  Format(IFormatPr
2b90: 6f 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62  ovider,String,Ob
2ba0: 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68  ject[])" /> meth
2bb0: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f  od...      /// O
2bc0: 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74  n Mono, it has t
2bd0: 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f  o call the metho
2be0: 64 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f  d overload witho
2bf0: 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ut the..      //
2c00: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f  / <see cref="IFo
2c10: 72 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e  rmatProvider" />
2c20: 20 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20   parameter, due 
2c30: 74 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f  to a bug in Mono
2c40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
2c50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2c60: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c70: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
2c80: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73    /// This is us
2c90: 65 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73  ed for culture-s
2ca0: 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69  pecific formatti
2cb0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
2cc0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
2cd0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ce0: 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20  format">..      
2cf0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73  /// The format s
2d00: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tring...      //
2d10: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2d20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d30: 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20  e="args">..     
2d40: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68   /// An array th
2d50: 65 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72  e objects to for
2d60: 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mat...      /// 
2d70: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2d80: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2d90: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73       /// The res
2da0: 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a  ulting string...
2db0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2dc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
2dd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
2de0: 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ng StringFormat(
2df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f 72  ..          IFor
2e00: 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76  matProvider prov
2e10: 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  ider,..         
2e20: 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d   string format,.
2e30: 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d  .          param
2e40: 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d  s object[] args.
2e50: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
2e60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e70: 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a   if (IsMono())..
2e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e90: 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d  turn String.Form
2ea0: 61 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  at(format, args)
2eb0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  ;..          els
2ec0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2ed0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
2ee0: 6f 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20  ormat(provider, 
2ef0: 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a  format, args);..
2f00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
2f10: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2f20: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f70: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
2f80: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
2f90: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2fa0: 63 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c  c string ToDispl
2fb0: 61 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ayString(..     
2fc0: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
2fd0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
2fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ff0: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
3000: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3010: 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73 70       return Disp
3020: 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a  layNullObject;..
3030: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
3040: 6e 67 20 73 74 72 69 6e 67 56 61 6c 75 65 20 3d  ng stringValue =
3050: 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28   value.ToString(
3060: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3070: 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e  if (stringValue.
3080: 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  Length == 0)..  
3090: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30a0: 72 6e 20 44 69 73 70 6c 61 79 45 6d 70 74 79 53  rn DisplayEmptyS
30b0: 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20 20 20 20  tring;....      
30c0: 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61      if (stringVa
30d0: 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 53  lue.IndexOfAny(S
30e0: 70 61 63 65 43 68 61 72 73 29 20 3c 20 30 29 0d  paceChars) < 0).
30f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
3100: 65 74 75 72 6e 20 73 74 72 69 6e 67 56 61 6c 75  eturn stringValu
3110: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
3120: 72 65 74 75 72 6e 20 48 65 6c 70 65 72 4d 65 74  return HelperMet
3130: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
3140: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3150: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
3160: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20  variantCulture, 
3170: 44 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  DisplayStringFor
3180: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
3190: 20 20 20 20 73 74 72 69 6e 67 56 61 6c 75 65 29      stringValue)
31a0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
31b0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3200: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
3210: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
3220: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
3230: 20 20 20 20 20 20 20 20 41 72 72 61 79 20 61 72          Array ar
3240: 72 61 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ray..          )
3250: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3260: 20 20 20 20 20 69 66 20 28 61 72 72 61 79 20 3d       if (array =
3270: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3280: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69         return Di
3290: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 3b 0d  splayNullArray;.
32a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
32b0: 28 61 72 72 61 79 2e 4c 65 6e 67 74 68 20 3d 3d  (array.Length ==
32c0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
32d0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
32e0: 79 45 6d 70 74 79 41 72 72 61 79 3b 0d 0a 0d 0a  yEmptyArray;....
32f0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
3300: 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d  Builder result =
3310: 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64   new StringBuild
3320: 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  er();....       
3330: 20 20 20 66 6f 72 65 61 63 68 20 28 6f 62 6a 65     foreach (obje
3340: 63 74 20 76 61 6c 75 65 20 69 6e 20 61 72 72 61  ct value in arra
3350: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  y)..          {.
3360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
3370: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
3380: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
3390: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
33a0: 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e 74 53 65  Append(ElementSe
33b0: 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20  parator);....   
33c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
33d0: 74 2e 41 70 70 65 6e 64 28 54 6f 44 69 73 70 6c  t.Append(ToDispl
33e0: 61 79 53 74 72 69 6e 67 28 76 61 6c 75 65 29 29  ayString(value))
33f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
3400: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3410: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20  result.Length > 
3420: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  0)..          {.
3430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
3440: 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20  esult.Insert(0, 
3450: 41 72 72 61 79 4f 70 65 6e 29 3b 0d 0a 20 20 20  ArrayOpen);..   
3460: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
3470: 74 2e 41 70 70 65 6e 64 28 41 72 72 61 79 43 6c  t.Append(ArrayCl
3480: 6f 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ose);..         
3490: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
34a0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f  return result.To
34b0: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
34c0: 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
34d0: 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  gion..  }..  #en
34e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3540: 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 4c  #region Native L
3550: 69 62 72 61 72 79 20 48 65 6c 70 65 72 20 43 6c  ibrary Helper Cl
3560: 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ass..  /// <summ
3570: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
3580: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 70 72   static class pr
3590: 6f 76 69 64 65 73 20 61 20 74 68 69 6e 20 77 72  ovides a thin wr
35a0: 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
35b0: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 0d   native library.
35c0: 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69 6e 67 20 66  .  /// loading f
35d0: 65 61 74 75 72 65 73 20 6f 66 20 74 68 65 20 75  eatures of the u
35e0: 6e 64 65 72 6c 79 69 6e 67 20 70 6c 61 74 66 6f  nderlying platfo
35f0: 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  rm...  /// </sum
3600: 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61  mary>..  interna
3610: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 4e  l static class N
3620: 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
3630: 65 72 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  er..  {..      #
3640: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
3650: 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 20 20  elegates..      
3660: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3670: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 65       /// This de
3680: 6c 65 67 61 74 65 20 69 73 20 75 73 65 64 20 74  legate is used t
3690: 6f 20 77 72 61 70 20 74 68 65 20 63 6f 6e 63 65  o wrap the conce
36a0: 70 74 20 6f 66 20 6c 6f 61 64 69 6e 67 20 61 20  pt of loading a 
36b0: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 2f 2f  native..      //
36c0: 2f 20 6c 69 62 72 61 72 79 2c 20 62 61 73 65 64  / library, based
36d0: 20 6f 6e 20 61 20 66 69 6c 65 20 6e 61 6d 65 2c   on a file name,
36e0: 20 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20 74   and returning t
36f0: 68 65 20 6c 6f 61 64 65 64 20 6d 6f 64 75 6c 65  he loaded module
3700: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 6e 64  ..      /// hand
3710: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
3720: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3730: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
3740: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
3750: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65      /// The file
3760: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74   name of the nat
3770: 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c  ive library to l
3780: 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oad...      /// 
3790: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
37a0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
37b0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
37c0: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
37d0: 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d  e upon success -
37e0: 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20  OR- IntPtr.Zero 
37f0: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
3800: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3810: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3820: 20 64 65 6c 65 67 61 74 65 20 49 6e 74 50 74 72   delegate IntPtr
3830: 20 4c 6f 61 64 4c 69 62 72 61 72 79 43 61 6c 6c   LoadLibraryCall
3840: 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
3850: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
3860: 0d 0a 20 20 20 20 20 20 29 3b 0d 0a 20 20 20 20  ..      );..    
3870: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
3880: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
38d0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
38e0: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
38f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3900: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3910: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
3920: 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
3930: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66  native library f
3940: 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 57 69  ile using the Wi
3950: 6e 33 32 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  n32..      /// A
3960: 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  PI...      /// <
3970: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3980: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
3990: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
39a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65      /// The file
39b0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74   name of the nat
39c0: 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c  ive library to l
39d0: 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oad...      /// 
39e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
39f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3a00: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
3a10: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
3a20: 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d  e upon success -
3a30: 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20  OR- IntPtr.Zero 
3a40: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
3a50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3a60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3a70: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c   static IntPtr L
3a80: 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33 32 28  oadLibraryWin32(
3a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
3aa0: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
3ab0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
3ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  {..          ret
3ad0: 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
3ae0: 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 4c 6f 61  MethodsWin32.Loa
3af0: 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d  dLibrary(fileNam
3b00: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  e);..      }....
3b10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3b60: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
3b70: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3b80: 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  K..      /// <su
3b90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3ba0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f  / Attempts to lo
3bb0: 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ad the specified
3bc0: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
3bd0: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 50  file using the P
3be0: 4f 53 49 58 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  OSIX..      /// 
3bf0: 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  API...      /// 
3c00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3c10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
3c20: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
3c30: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
3c40: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
3c50: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
3c60: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
3c70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
3c80: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3c90: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
3ca0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
3cb0: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
3cc0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
3cd0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
3ce0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
3cf0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
3d00: 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
3d10: 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78  LoadLibraryPosix
3d20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
3d30: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
3d40: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3d50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65   {..          re
3d60: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3d70: 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c  eMethodsPosix.dl
3d80: 6f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  open(..         
3d90: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 55       fileName, U
3da0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
3db0: 64 73 50 6f 73 69 78 2e 52 54 4c 44 5f 44 45 46  dsPosix.RTLD_DEF
3dc0: 41 55 4c 54 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  AULT);..      }.
3dd0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
3de0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
3df0: 20 20 20 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 2f 2f 0d 0a 0d 0a  ////////////....
3e40: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
3e50: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
3e60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3e70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
3e80: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
3e90: 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
3ea0: 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 2e  ve library file.
3eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3ec0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3ed0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
3ee0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
3ef0: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
3f00: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
3f10: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
3f20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3f30: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3f40: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3f50: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
3f60: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
3f70: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
3f80: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
3f90: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
3fa0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3fb0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
3fc0: 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  tic IntPtr LoadL
3fd0: 69 62 72 61 72 79 28 0d 0a 20 20 20 20 20 20 20  ibrary(..       
3fe0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
3ff0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  me..          ).
4000: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4010: 20 20 20 20 4c 6f 61 64 4c 69 62 72 61 72 79 43      LoadLibraryC
4020: 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
4030: 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69   = LoadLibraryWi
4040: 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  n32;....#if !PLA
4050: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4060: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
4070: 20 20 69 66 20 28 21 48 65 6c 70 65 72 4d 65 74    if (!HelperMet
4080: 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29  hods.IsWindows()
4090: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
40a0: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64   callback = Load
40b0: 4c 69 62 72 61 72 79 50 6f 73 69 78 3b 0d 0a 23  LibraryPosix;..#
40c0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
40d0: 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 62 61     return callba
40e0: 63 6b 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ck(fileName);.. 
40f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
4100: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20  ndregion..  }.. 
4110: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4120: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4170: 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61  ..  #region Unma
4180: 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65  naged Interop Me
4190: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
41a0: 73 73 20 28 50 4f 53 49 58 29 0d 0a 23 69 66 20  ss (POSIX)..#if 
41b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
41c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f  TFRAMEWORK..  //
41d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
41e0: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64 65  // This class de
41f0: 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20  clares P/Invoke 
4200: 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20  methods to call 
4210: 6e 61 74 69 76 65 20 50 4f 53 49 58 20 41 50 49  native POSIX API
4220: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
4230: 61 72 79 3e 0d 0a 20 20 5b 53 75 70 70 72 65 73  ary>..  [Suppres
4240: 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65  sUnmanagedCodeSe
4250: 63 75 72 69 74 79 5d 0d 0a 20 20 69 6e 74 65 72  curity]..  inter
4260: 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
4270: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4280: 68 6f 64 73 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a  hodsPosix..  {..
4290: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
42a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
42e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
42f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4300: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
4310: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
4320: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
4330: 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20  e Unix dlopen.. 
4340: 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
4350: 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f 53 49  n.  See the POSI
4360: 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  X documentation 
4370: 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73  for full details
4380: 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20   on what it..   
4390: 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20     /// does...  
43a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
43b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
43c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
43d0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
43e0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
43f0: 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72   executable libr
4400: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
4410: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
4420: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4430: 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "mode">..      /
4440: 2f 2f 20 54 68 69 73 20 6d 75 73 74 20 62 65 20  // This must be 
4450: 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  a combination of
4460: 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20   the individual 
4470: 62 69 74 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c  bit flags RTLD_L
4480: 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  AZY,..      /// 
4490: 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47  RTLD_NOW, RTLD_G
44a0: 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54  LOBAL, and/or RT
44b0: 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20  LD_LOCAL...     
44c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
44d0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
44e0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
44f0: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
4500: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
4510: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
4520: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
4530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4540: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44  turns>..      [D
4550: 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65  llImport("__Inte
4560: 72 6e 61 6c 22 2c 20 45 6e 74 72 79 50 6f 69 6e  rnal", EntryPoin
4570: 74 20 3d 20 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20  t = "dlopen",.. 
4580: 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67           Calling
4590: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
45a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
45b0: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
45c0: 43 68 61 72 53 65 74 2e 41 6e 73 69 2c 0d 0a 20  CharSet.Ansi,.. 
45d0: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
45e0: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
45f0: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
4600: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
4610: 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73            SetLas
4620: 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d  tError = true)].
4630: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
4640: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
4650: 74 50 74 72 20 64 6c 6f 70 65 6e 28 73 74 72 69  tPtr dlopen(stri
4660: 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 69 6e 74  ng fileName, int
4670: 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20 20 20 20 20   mode);....     
4680: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
46d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
46e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75  .      /// For u
46f0: 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29  se with dlopen()
4700: 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20  , bind function 
4710: 63 61 6c 6c 73 20 6c 61 7a 69 6c 79 2e 0d 0a 20  calls lazily... 
4720: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4730: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
4740: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
4750: 4c 44 5f 4c 41 5a 59 20 3d 20 30 78 31 3b 0d 0a  LD_LAZY = 0x1;..
4760: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47b0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
47c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
47d0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
47e0: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
47f0: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 69 6d 6d  nction calls imm
4800: 65 64 69 61 74 65 6c 79 2e 0d 0a 20 20 20 20 20  ediately...     
4810: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4820: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
4830: 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4e  const int RTLD_N
4840: 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d 0a 20 20 20  OW = 0x2;....   
4850: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
48a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
48c0: 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e   use with dlopen
48d0: 28 29 2c 20 6d 61 6b 65 20 73 79 6d 62 6f 6c 73  (), make symbols
48e0: 20 67 6c 6f 62 61 6c 6c 79 20 61 76 61 69 6c 61   globally availa
48f0: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ble...      /// 
4900: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4910: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
4920: 20 69 6e 74 20 52 54 4c 44 5f 47 4c 4f 42 41 4c   int RTLD_GLOBAL
4930: 20 3d 20 30 78 31 30 30 3b 0d 0a 0d 0a 20 20 20   = 0x100;....   
4940: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4950: 2f 2f 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 0d 0a 20 20  ////////////..  
4990: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
49a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
49b0: 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e   use with dlopen
49c0: 28 29 2c 20 6f 70 70 6f 73 69 74 65 20 6f 66 20  (), opposite of 
49d0: 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64  RTLD_GLOBAL, and
49e0: 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20   the default... 
49f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4a00: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
4a10: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
4a20: 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30 78 30 30 30  LD_LOCAL = 0x000
4a30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a80: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4aa0: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
4ab0: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 74 68 65 20  h dlopen(), the 
4ac0: 64 65 66 61 75 6c 74 73 20 75 73 65 64 20 62 79  defaults used by
4ad0: 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
4ae0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4af0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
4b00: 61 6c 20 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  al  const int RT
4b10: 4c 44 5f 44 45 46 41 55 4c 54 20 3d 20 52 54 4c  LD_DEFAULT = RTL
4b20: 44 5f 4e 4f 57 20 7c 20 52 54 4c 44 5f 47 4c 4f  D_NOW | RTLD_GLO
4b30: 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69  BAL;..  }..#endi
4b40: 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  f..  #endregion.
4b50: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
4b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
4bb0: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
4bc0: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
4bd0: 20 43 6c 61 73 73 20 28 57 69 6e 33 32 29 0d 0a   Class (Win32)..
4be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4bf0: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73  .  /// This clas
4c00: 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76  s declares P/Inv
4c10: 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63  oke methods to c
4c20: 61 6c 6c 20 6e 61 74 69 76 65 20 57 69 6e 33 32  all native Win32
4c30: 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f   APIs...  /// </
4c40: 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50  summary>..#if !P
4c50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4c60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70  RAMEWORK..  [Sup
4c70: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
4c80: 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e  deSecurity]..#en
4c90: 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  dif..  internal 
4ca0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73  static class Uns
4cb0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
4cc0: 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a 20 20 20 20  Win32..  {..    
4cd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
4d20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4d40: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
4d50: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
4d60: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
4d70: 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d  n32 LoadLibrary.
4d80: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
4d90: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
4da0: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
4db0: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
4dc0: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
4dd0: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
4de0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4df0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4e00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
4e10: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
4e20: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
4e30: 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62  e executable lib
4e40: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
4e50: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
4e60: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4e70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
4e80: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
4e90: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
4ea0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
4eb0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
4ec0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4ed0: 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  s>..#if !PLATFOR
4ee0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4ef0: 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  RK..      [DllIm
4f00: 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c  port("kernel32",
4f10: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
4f20: 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64  DllImport("cored
4f30: 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 43  ll",..#endif.. C
4f40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
4f50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
4f60: 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61  tion.Winapi, Cha
4f70: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41  rSet = CharSet.A
4f80: 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46  uto,..#if !PLATF
4f90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4fa0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4fb0: 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d  BestFitMapping =
4fc0: 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55   false, ThrowOnU
4fd0: 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20  nmappableChar = 
4fe0: 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  true,..#endif.. 
4ff0: 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74           SetLast
5000: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
5010: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
5020: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5030: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28  Ptr LoadLibrary(
5040: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29  string fileName)
5050: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50a0: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
50b0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
50c0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
50d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
50e0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
50f0: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
5100: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
5110: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 47 65   native Win32 Ge
5120: 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20  tSystemInfo..   
5130: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
5140: 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64    See the MSDN d
5150: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
5160: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
5170: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
5180: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
5190: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
51a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
51b0: 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e  m name="systemIn
51c0: 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fo">..      /// 
51d0: 54 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  The system infor
51e0: 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65  mation structure
51f0: 20 74 6f 20 62 65 20 66 69 6c 6c 65 64 20 69 6e   to be filled in
5200: 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   by the function
5210: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5220: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 5b 44 6c  aram>..      [Dl
5230: 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c  lImport("coredll
5240: 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
5250: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5260: 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 29  nvention.Winapi)
5270: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
5280: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5290: 76 6f 69 64 20 47 65 74 53 79 73 74 65 6d 49 6e  void GetSystemIn
52a0: 66 6f 28 6f 75 74 20 53 59 53 54 45 4d 5f 49 4e  fo(out SYSTEM_IN
52b0: 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d  FO systemInfo);.
52c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5320: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5330: 2f 2f 20 54 68 69 73 20 65 6e 75 6d 65 72 61 74  // This enumerat
5340: 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  ion contains the
5350: 20 70 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73   possible values
5360: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
5370: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
5380: 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c 64  chitecture field
5390: 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20 69   of the system i
53a0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
53b0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ture...      ///
53c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
53d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d     internal enum
53e0: 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   ProcessorArchit
53f0: 65 63 74 75 72 65 20 3a 20 75 73 68 6f 72 74 20  ecture : ushort 
5400: 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69 6e 33 32  /* COMPAT: Win32
5410: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  . */..      {.. 
5420: 20 20 20 20 20 20 20 20 20 49 6e 74 65 6c 20 3d           Intel =
5430: 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d   0,..          M
5440: 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20 20 20 20  IPS = 1,..      
5450: 20 20 20 20 41 6c 70 68 61 20 3d 20 32 2c 0d 0a      Alpha = 2,..
5460: 20 20 20 20 20 20 20 20 20 20 50 6f 77 65 72 50            PowerP
5470: 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20 20 20 20  C = 3,..        
5480: 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20 20 20 20    SHx = 4,..    
5490: 20 20 20 20 20 20 41 52 4d 20 3d 20 35 2c 0d 0a        ARM = 5,..
54a0: 20 20 20 20 20 20 20 20 20 20 49 41 36 34 20 3d            IA64 =
54b0: 20 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   6,..          A
54c0: 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a 20 20 20  lpha64 = 7,..   
54d0: 20 20 20 20 20 20 20 4d 53 49 4c 20 3d 20 38 2c         MSIL = 8,
54e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 4d 44 36  ..          AMD6
54f0: 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20 20 20 20  4 = 9,..        
5500: 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e 36 34 20    IA32_on_Win64 
5510: 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  = 10,..         
5520: 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78 46 46 46   Unknown = 0xFFF
5530: 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  F..      }....  
5540: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
5590: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
55a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
55b0: 69 73 20 73 74 72 75 63 74 75 72 65 20 63 6f 6e  is structure con
55c0: 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f  tains informatio
55d0: 6e 20 61 62 6f 75 74 20 74 68 65 20 63 75 72 72  n about the curr
55e0: 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e 20 54 68  ent computer. Th
55f0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e  is..      /// in
5600: 63 6c 75 64 65 73 20 74 68 65 20 70 72 6f 63 65  cludes the proce
5610: 73 73 6f 72 20 74 79 70 65 2c 20 70 61 67 65 20  ssor type, page 
5620: 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20 61 64 64  size, memory add
5630: 72 65 73 73 65 73 2c 20 65 74 63 2e 0d 0a 20 20  resses, etc...  
5640: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5650: 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74 72 75 63  y>..      [Struc
5660: 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
5670: 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
5680: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
5690: 73 74 72 75 63 74 20 53 59 53 54 45 4d 5f 49 4e  struct SYSTEM_IN
56a0: 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  FO..      {..   
56b0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50 72         public Pr
56c0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
56d0: 75 72 65 20 77 50 72 6f 63 65 73 73 6f 72 41 72  ure wProcessorAr
56e0: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20  chitecture;..   
56f0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
5700: 68 6f 72 74 20 77 52 65 73 65 72 76 65 64 3b 20  hort wReserved; 
5710: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5720: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5730: 20 75 69 6e 74 20 64 77 50 61 67 65 53 69 7a 65   uint dwPageSize
5740: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
5750: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5760: 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 69 6e 69  ic IntPtr lpMini
5770: 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64  mumApplicationAd
5780: 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53  dress; /* NOT US
5790: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
57a0: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c   public IntPtr l
57b0: 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69 63 61 74  pMaximumApplicat
57c0: 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e  ionAddress; /* N
57d0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
57e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
57f0: 74 20 64 77 41 63 74 69 76 65 50 72 6f 63 65 73  t dwActiveProces
5800: 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20  sorMask; /* NOT 
5810: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
5820: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
5830: 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65 73 73  wNumberOfProcess
5840: 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ors; /* NOT USED
5850: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
5860: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 72 6f  ublic uint dwPro
5870: 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a 20 4e  cessorType; /* N
5880: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
5890: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
58a0: 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e 47 72  t dwAllocationGr
58b0: 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20 4e 4f  anularity; /* NO
58c0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
58d0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f       public usho
58e0: 72 74 20 77 50 72 6f 63 65 73 73 6f 72 4c 65 76  rt wProcessorLev
58f0: 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  el; /* NOT USED 
5900: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
5910: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f  blic ushort wPro
5920: 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e 3b 20  cessorRevision; 
5930: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5940: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
5950: 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69  .  }..  #endregi
5960: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
5970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
59c0: 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74  on Unmanaged Int
59d0: 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61  erop Methods Sta
59e0: 74 69 63 20 43 6c 61 73 73 20 28 53 51 4c 69 74  tic Class (SQLit
59f0: 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  e)..  /// <summa
5a00: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
5a10: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
5a20: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
5a30: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 53  to call native S
5a40: 51 4c 69 74 65 20 41 50 49 73 2e 0d 0a 20 20 2f  QLite APIs...  /
5a50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23  // </summary>..#
5a60: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5a70: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
5a80: 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61   [SuppressUnmana
5a90: 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d  gedCodeSecurity]
5aa0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65  ..#endif..  inte
5ab0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
5ac0: 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  s UnsafeNativeMe
5ad0: 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20  thods..  {..    
5ae0: 20 20 23 72 65 67 69 6f 6e 20 53 68 61 72 65 64    #region Shared
5af0: 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c   Native SQLite L
5b00: 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69  ibrary Pre-Loadi
5b10: 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 23  ng Code..      #
5b20: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
5b30: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
5b40: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5b50: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
5b60: 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64  e extension used
5b70: 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e   for dynamic lin
5b80: 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d 0a 20 20  k libraries...  
5b90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5ba0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
5bb0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
5bc0: 79 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65  y string DllFile
5bd0: 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c  Extension = ".dl
5be0: 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  l";....      ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
5c40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5c50: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
5c60: 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66  extension used f
5c70: 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  or the XML confi
5c80: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
5c90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5ca0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5cb0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
5cc0: 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f 6e 66 69  nly string Confi
5cd0: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  gFileExtension =
5ce0: 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20   ".config";.... 
5cf0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5d40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5d50: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
5d60: 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20  his is the name 
5d70: 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  of the XML confi
5d80: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 73 70  guration file sp
5d90: 65 63 69 66 69 63 20 74 6f 20 74 68 65 0d 0a 20  ecific to the.. 
5da0: 20 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e       /// System.
5db0: 44 61 74 61 2e 53 51 4c 69 74 65 20 61 73 73 65  Data.SQLite asse
5dc0: 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mbly...      ///
5dd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5de0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5df0: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
5e00: 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g XmlConfigFileN
5e10: 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
5e20: 20 74 79 70 65 6f 66 28 55 6e 73 61 66 65 4e 61   typeof(UnsafeNa
5e30: 74 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d  tiveMethods).Nam
5e40: 65 73 70 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65  espace + DllFile
5e50: 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20  Extension +..   
5e60: 20 20 20 20 20 20 20 43 6f 6e 66 69 67 46 69 6c         ConfigFil
5e70: 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20  eExtension;.... 
5e80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5ed0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5ee0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
5ef0: 68 69 73 20 69 73 20 74 68 65 20 58 4d 4c 20 63  his is the XML c
5f00: 6f 6e 66 69 67 75 72 61 74 72 69 6f 6e 20 66 69  onfiguratrion fi
5f10: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
5f20: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
5f30: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
5f40: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
5f50: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
5f60: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
5f70: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
5f80: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ion..      /// f
5f90: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
5fa0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5fb0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
5fc0: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
5fd0: 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74   XmlConfigDirect
5fe0: 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  oryToken =..    
5ff0: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
6000: 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66 69 67 44  QLite_XmlConfigD
6010: 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 20 20 20  irectory%";..   
6020: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6030: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6080: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
6090: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
60a0: 6e 74 73 20 28 44 65 73 6b 74 6f 70 20 46 72 61  nts (Desktop Fra
60b0: 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69  mework Only)..#i
60c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
60d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
60e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
60f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
6100: 73 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e  s is the environ
6110: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
6120: 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ken that will be
6130: 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a   replaced with..
6140: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75        /// the qu
6150: 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f 20  alified path to 
6160: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
6170: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 61 73  ntaining this as
6180: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
6190: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
61a0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
61b0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
61c0: 69 6e 67 20 41 73 73 65 6d 62 6c 79 44 69 72 65  ing AssemblyDire
61d0: 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20  ctoryToken =..  
61e0: 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61          "%PreLoa
61f0: 64 53 51 4c 69 74 65 5f 41 73 73 65 6d 62 6c 79  dSQLite_Assembly
6200: 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a  Directory%";....
6210: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6260: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6270: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6280: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
6290: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
62a0: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
62b0: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
62c0: 68 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h an..      /// 
62d0: 61 62 62 72 65 76 69 61 74 69 6f 6e 20 6f 66 20  abbreviation of 
62e0: 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65  the target frame
62f0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
6300: 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20  alue associated 
6310: 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  with..      /// 
6320: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  this assembly...
6330: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6340: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
6350: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
6360: 6e 6c 79 20 73 74 72 69 6e 67 20 54 61 72 67 65  nly string Targe
6370: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20  tFrameworkToken 
6380: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
6390: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 54 61 72  reLoadSQLite_Tar
63a0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 25 22 3b 0d  getFramework%";.
63b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
63c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
63d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
63e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6420: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
6430: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
6440: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6450: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
6460: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
6470: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
6480: 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ic _SQLiteNative
6490: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
64a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69  .      /// _SQLi
64b0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
64c0: 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73  ndle, and proces
64d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
64e0: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e  latforms fields.
64f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
6500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
6510: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
6520: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
6530: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
6540: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
6550: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
65a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
65b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
65c0: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
65d0: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
65e0: 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65  gs between proce
65f0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
6600: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  e..      /// nam
6610: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20  es and platform 
6620: 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61  names.  These ma
6630: 70 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75  ppings are now u
6640: 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20  sed for two..   
6650: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
6660: 20 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72    First, they ar
6670: 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  e used to determ
6680: 69 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d  ine if the assem
6690: 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20  bly code..      
66a0: 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20  /// base should 
66b0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20  be used instead 
66c0: 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c  of the location,
66d0: 20 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74   based upon whet
66e0: 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f  her one..      /
66f0: 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68  // or more of th
6700: 65 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65  e named sub-dire
6710: 63 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69  ctories exist wi
6720: 74 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c  thin the assembl
6730: 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  y code..      //
6740: 2f 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c  / base.  Second,
6750: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74   they are used t
6760: 6f 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64  o assist in load
6770: 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69  ing the appropri
6780: 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ate..      /// S
6790: 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
67a0: 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20  sembly into the 
67b0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
67c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
67d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
67e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
67f0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
6800: 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f  string> processo
6810: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
6820: 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20  tforms;....     
6830: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
6880: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6890: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
68a0: 69 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65  is the cached re
68b0: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
68c0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
68d0: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
68e0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
68f0: 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e  /> method -OR- n
6900: 75 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68  ull if that meth
6910: 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61  od..      /// ha
6920: 73 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64  s never returned
6930: 20 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d   a valid value..
6940: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6950: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
6960: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
6970: 6e 67 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c  ng cachedAssembl
6980: 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20  yDirectory;.... 
6990: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
69a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
69e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
69f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
6a00: 68 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69  hen this field i
6a10: 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69  s non-zero, it i
6a20: 6e 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20  ndicates the..  
6a30: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
6a40: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
6a50: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
6a60: 6f 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20  od was not able 
6a70: 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20  to locate a..   
6a80: 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
6a90: 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
6aa0: 72 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20  ry.  The..      
6ab0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
6ac0: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
6ad0: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
6ae0: 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20  thod will check 
6af0: 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  this..      /// 
6b00: 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20  field and skips 
6b10: 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c  calls into the <
6b20: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
6b30: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
6b40: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  />..      /// me
6b50: 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74  thod whenever it
6b60: 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20   is non-zero... 
6b70: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6b80: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
6b90: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e  te static bool n
6ba0: 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
6bb0: 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry;....      ///
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6c10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6c20: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
6c30: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
6c40: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
6c50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
6c60: 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66  cref="GetXmlConf
6c70: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
6c80: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
6c90: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
6ca0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
6cb0: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
6cc0: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
6cd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6ce0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
6cf0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
6d00: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
6d10: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
6d20: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
6d70: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6d80: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
6d90: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
6da0: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
6db0: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
6dc0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
6dd0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
6de0: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ame" /> method w
6df0: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
6e00: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
6e10: 2f 2f 20 73 75 69 74 61 62 6c 65 20 58 4d 4c 20  // suitable XML 
6e20: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
6e30: 6c 65 20 6e 61 6d 65 2e 20 20 54 68 65 0d 0a 20  le name.  The.. 
6e40: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
6e50: 65 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c  ef="GetCachedXml
6e60: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
6e70: 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63  /> method will c
6e80: 68 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20  heck this..     
6e90: 20 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73   /// field and s
6ea0: 6b 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20  kips calls into 
6eb0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47  the <see cref="G
6ec0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
6ed0: 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  ame" />..      /
6ee0: 2f 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76  // method whenev
6ef0: 65 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72  er it is non-zer
6f00: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
6f10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6f20: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
6f30: 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46  ool noXmlConfigF
6f40: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
6f50: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6f60: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
6fb0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6fc0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
6fd0: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
6fe0: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
6ff0: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
7000: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
7010: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7020: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
7030: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
7040: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7050: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
7060: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
7070: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
70c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
70d0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
70e0: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
70f0: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
7100: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
7110: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
7120: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
7130: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
7140: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
7150: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
7160: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
7170: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7180: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
7190: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
71a0: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
71b0: 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
71c0: 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
71d0: 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
71e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
71f0: 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52  RAMEWORK..#if PR
7200: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
7210: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20  RARY..          
7220: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7230: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e   NOTE: If the "N
7240: 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22  o_PreLoadSQLite"
7250: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
7260: 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
7270: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7280: 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20       anything), 
7290: 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70 65  skip all our spe
72a0: 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69  cial code and si
72b0: 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20  mply return...  
72c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
72d0: 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
72e0: 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72  tingValue("No_Pr
72f0: 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75  eLoadSQLite", nu
7300: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
7310: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7320: 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  rn;..#endif..#en
7330: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
7340: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
7350: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
7360: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
7370: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7380: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
7390: 65 20 6c 69 73 74 73 20 6f 66 20 73 74 61 74 69  e lists of stati
73a0: 73 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 20  stics that will 
73b0: 63 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20  contain..       
73c0: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
73d0: 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20  ous counts used 
73e0: 69 6e 20 64 65 62 75 67 67 69 6e 67 2c 20 69 6e  in debugging, in
73f0: 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a 20 20 20  cluding the..   
7400: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7410: 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20  number of times 
7420: 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c  each setting val
7430: 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61 64  ue has been read
7440: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
7450: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
7460: 44 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28  Data.Initialize(
7470: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
7480: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7490: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
74a0: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
74b0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
74c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
74d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
74e0: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
74f0: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
7500: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
7510: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
7520: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7530: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
7540: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
7550: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
7560: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
7570: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
7580: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
7590: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
75a0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
75b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
75c0: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
75d0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
75e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
75f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7610: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
7620: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
7630: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
7640: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
7650: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
7660: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
7670: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
7680: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
7690: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
76a0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
76b0: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
76c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
76d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
76e0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
76f0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
7700: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
7710: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
7720: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
7730: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
7740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7750: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
7760: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
7770: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
7780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
77a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
77b0: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
77c0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
77d0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
77e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77f0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
7800: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
7810: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
7820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7830: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7840: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
7850: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
7860: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
7870: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
7880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7890: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
78a0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
78b0: 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36  Add("AMD64", "x6
78c0: 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4");..          
78d0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
78e0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
78f0: 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34  tforms.Add("IA64
7900: 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a  ", "Itanium");..
7910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7920: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
7930: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
7940: 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e  .Add("ARM", "Win
7950: 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  CE");..         
7960: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51       }....#if SQ
7970: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
7980: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
7990: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
79a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
79b0: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
79c0: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
79d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
79e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
79f0: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
7a00: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
7a10: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
7a20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7a40: 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  (_SQLiteNativeMo
7a50: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e  duleHandle == In
7a60: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
7a70: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7a90: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
7aa0: 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7ac0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
7ad0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75  rchitecture = nu
7ae0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
7af0: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
7b00: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
7b10: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
7b20: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
7b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b40: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
7b50: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
7b60: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
7b70: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
7b80: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7ba0: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
7bb0: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
7bc0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
7bd0: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
7be0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
7bf0: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
7c00: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
7c10: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
7c20: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
7c30: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
7c40: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
7c50: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
7c60: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c90: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
7ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7cb0: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
7cc0: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
7ce0: 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65  Directory, proce
7cf0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
7d00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
7d10: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
7d20: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
7d30: 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
7d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d50: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
7d60: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b  veModuleHandle);
7d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7d80: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
7d90: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
7da0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7db0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
7e00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7e10: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69  .      /// Combi
7e20: 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74 72  nes two path str
7e30: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
7e40: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7e50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7e60: 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20  me="path1">..   
7e70: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74     /// The first
7e80: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
7e90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
7ea0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
7eb0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
7ec0: 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h2">..      /// 
7ed0: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20  The second path 
7ee0: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
7ef0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7f00: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
7f10: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7f20: 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68  he combined path
7f30: 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c   string -OR- nul
7f40: 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65  l if both of the
7f50: 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a   original path..
7f60: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
7f70: 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  s are null...   
7f80: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
7f90: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
7fa0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d   static string M
7fb0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
7fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7fd0: 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20  ng path1,..     
7fe0: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
7ff0: 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  2..          )..
8000: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8010: 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d 20     if (path1 != 
8020: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8030: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8040: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
8050: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8060: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
8070: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68  ath.Combine(path
8080: 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20  1, path2);..    
8090: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80b0: 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d    return path1;.
80c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
80d0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
80e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
80f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
8100: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8120: 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20  eturn path2;..  
8130: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
8140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8150: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
8160: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
8170: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
81d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
81e0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73        /// Resets
81f0: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
8200: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
8210: 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 2c 20 74  le name value, t
8220: 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65 0d  hus forcing the.
8230: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20  .      /// next 
8240: 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72 65  call to <see cre
8250: 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43  f="GetCachedXmlC
8260: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
8270: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c 79  > method to rely
8280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e  ..      /// upon
8290: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
82a0: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
82b0: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
82c0: 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20 20  to fetch the..  
82d0: 20 20 20 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e 66      /// XML conf
82e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
82f0: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
8300: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8310: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
8320: 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68 65   void ResetCache
8330: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
8340: 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  me()..      {.. 
8350: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
8360: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
8370: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
8380: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
8390: 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  a.IncrementOther
83a0: 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65  Count("Method_Re
83b0: 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  setCachedXmlConf
83c0: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
83d0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
83e0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
83f0: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
8400: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
8410: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8420: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
8430: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
8440: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
8450: 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43            noXmlC
8460: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
8470: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
8480: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
8490: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
84a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
84e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
84f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8500: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
8510: 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20 58  rns the cached X
8520: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
8530: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
8540: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  he..      /// as
8550: 73 65 6d 62 6c 79 20 63 6f 6e 74 61 69 6e 69 6e  sembly containin
8560: 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79  g the managed Sy
8570: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
8580: 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 69 66 0d   components, if.
8590: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c  .      /// avail
85a0: 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61  able.  If the ca
85b0: 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ched XML configu
85c0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
85d0: 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 0d 0a 20   value is not.. 
85e0: 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62       /// availab
85f0: 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  le, the <see cre
8600: 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  f="GetXmlConfigF
8610: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
8620: 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f  od will..      /
8630: 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62  // be used to ob
8640: 74 61 69 6e 20 74 68 65 20 58 4d 4c 20 63 6f 6e  tain the XML con
8650: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
8660: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
8670: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8680: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
86a0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
86b0: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d  n file name -OR-
86c0: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
86d0: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
86e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64  ..      /// or d
86f0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a  oes not exist...
8700: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
8710: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
8720: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
8730: 67 20 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  g GetCachedXmlCo
8740: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
8750: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8760: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
8770: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
8780: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
8790: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
87a0: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
87b0: 22 4d 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65  "Method_GetCache
87c0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
87d0: 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  me");..#endif.. 
87e0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
87f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
8800: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
8810: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
8820: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8830: 20 20 20 69 66 20 28 63 61 63 68 65 64 58 6d 6c     if (cachedXml
8840: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 21  ConfigFileName !
8850: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
8860: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8870: 6e 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  n cachedXmlConfi
8880: 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  gFileName;....  
8890: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
88a0: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
88b0: 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ame)..          
88c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
88d0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
88e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
88f0: 65 74 75 72 6e 20 47 65 74 58 6d 6c 43 6f 6e 66  eturn GetXmlConf
8900: 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 20  igFileName();.. 
8910: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8930: 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20  /////////..     
8970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8980: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
8990: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
89a0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
89b0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ion file name fo
89c0: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a  r the assembly..
89d0: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
89e0: 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64  ning the managed
89f0: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
8a00: 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d  ite components..
8a10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
8a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8a30: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8a40: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
8a50: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8a60: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
8a70: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
8a80: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
8a90: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
8aa0: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
8ab0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8ac0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8ad0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 58  atic string GetX
8ae0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
8af0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
8b00: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
8b10: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
8b20: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
8b30: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
8b40: 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
8b50: 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 58  unt("Method_GetX
8b60: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
8b70: 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
8b80: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
8b90: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  n....          s
8ba0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b  tring directory;
8bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
8bc0: 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  ng fileName;....
8bd0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8be0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8bf0: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
8c00: 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e  ory = AppDomain.
8c10: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
8c20: 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  seDirectory;..  
8c30: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
8c40: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
8c50: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
8c60: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
8c70: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
8c80: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
8c90: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
8ca0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8cb0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
8cc0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
8cd0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cf0: 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67   cachedXmlConfig
8d00: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e  FileName = fileN
8d10: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
8d20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8d30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
8d40: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
8d50: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
8d60: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
8d70: 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65 64 41  ory = GetCachedA
8d80: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
8d90: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ();..          f
8da0: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
8db0: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
8dc0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
8dd0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
8de0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
8df0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
8e00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
8e20: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
8e30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
8e40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8e50: 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58 6d          cachedXm
8e60: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
8e70: 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
8e80: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8ea0: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
8eb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8ec0: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
8ed0: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
8ee0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8ef0: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c             noXml
8f00: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
8f10: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
8f20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
8f30: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
8f40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8fa0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8fb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e  ..      /// If n
8fc0: 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63  ecessary, replac
8fd0: 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64  es all supported
8fe0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
8ff0: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 0d 0a  on file tokens..
9000: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
9010: 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20  heir associated 
9020: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
9030: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9040: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9050: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
9060: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9070: 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20  name of the XML 
9080: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
9090: 6c 65 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a  le being read...
90a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
90b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
90c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
90d0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  ">..      /// A 
90e0: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65  setting value re
90f0: 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20  ad from the XML 
9100: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
9110: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
9120: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
9130: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9140: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
9150: 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72  e of the <paramr
9160: 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20  ef name="value" 
9170: 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70  /> will all supp
9180: 6f 72 74 65 64 20 58 4d 4c 0d 0a 20 20 20 20 20  orted XML..     
9190: 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
91a0: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 20 72  on file tokens r
91b0: 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74  eplaced.  No ret
91c0: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73  urn value is res
91d0: 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  erved..      ///
91e0: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20   to indicate an 
91f0: 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74  error.  This met
9200: 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e  hod cannot fail.
9210: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
9220: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
9230: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
9240: 69 6e 67 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f  ing ReplaceXmlCo
9250: 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 0d  nfigFileTokens(.
9260: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9270: 67 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  g fileName,..   
9280: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
9290: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
92a0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
92b0: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
92c0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
92d0: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
92e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
92f0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
9300: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
9310: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
9320: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9330: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
9340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9350: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9360: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9370: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
9380: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
9390: 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  Name(fileName);.
93a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
93b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
93c0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
93d0: 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
93e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9410: 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
9420: 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9440: 20 20 20 20 20 20 20 20 20 58 6d 6c 43 6f 6e 66           XmlConf
9450: 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e  igDirectoryToken
9460: 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20  , directory);.. 
9470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9480: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9490: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
94a0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
94b0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
94c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
94d0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
94e0: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
94f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9500: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
9510: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9530: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
9540: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
9550: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
9570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9580: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95a0: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
95b0: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
95c0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
95d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95f0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
9600: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
9610: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
9620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
9640: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
9650: 64 20 74 6f 20 72 65 70 6c 61 63 65 20 58 4d 4c  d to replace XML
9660: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9680: 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69      "configurati
9690: 6f 6e 20 66 69 6c 65 20 5c 22 7b 30 7d 5c 22 20  on file \"{0}\" 
96a0: 74 6f 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a 20  tokens: {1}",.. 
96b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
96d0: 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74  eName, e)); /* t
96e0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9710: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
9720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9730: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
9760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9770: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
9780: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
9790: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
97a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
97b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
97c0: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
97d0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
97e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
97f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9830: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9840: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
9850: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
9860: 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
9870: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
9880: 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 0d  ting, using the.
9890: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69  .      /// speci
98a0: 66 69 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  fied XML configu
98b0: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
98c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
98d0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
98e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
98f0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
9900: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
9910: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
9920: 6f 6e 20 66 69 6c 65 20 74 6f 20 72 65 61 64 2e  on file to read.
9930: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
9940: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
9950: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
9960: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
9970: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73  he name of the s
9980: 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  etting...      /
9990: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
99a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
99b0: 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20  me="default">.. 
99c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
99d0: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
99e0: 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e 67  d if the setting
99f0: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
9a00: 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20  t explicitly..  
9a10: 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f      /// or canno
9a20: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
9a30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
9a40: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
9a50: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78 70  <param name="exp
9a60: 61 6e 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  and">..      ///
9a70: 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78 70   Non-zero to exp
9a80: 61 6e 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e 6d  and any environm
9a90: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 72 65 66  ent variable ref
9aa0: 65 72 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e 65  erences containe
9ab0: 64 20 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d in..      /// 
9ac0: 74 68 65 20 73 65 74 74 69 6e 67 20 76 61 6c 75  the setting valu
9ad0: 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  e to be returned
9ae0: 2e 20 20 54 68 69 73 20 68 61 73 20 6e 6f 20 65  .  This has no e
9af0: 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e 45  ffect on the .NE
9b00: 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d  T..      /// Com
9b10: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
9b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
9b30: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
9b40: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9b50: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
9b60: 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52   the setting -OR
9b70: 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  - the default va
9b80: 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62 79  lue specified by
9b90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9ba0: 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61  amref name="defa
9bb0: 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61  ult" /> if it ha
9bc0: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
9bd0: 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20  xplicitly or..  
9be0: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
9bf0: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
9c00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9c10: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
9c20: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
9c30: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
9c40: 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ViaXmlConfigFile
9c50: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
9c60: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f 2a  ing fileName, /*
9c70: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
9c80: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20    string name,  
9c90: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
9ca0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
9cb0: 65 66 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f  efault, /* in */
9cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
9cd0: 20 65 78 70 61 6e 64 20 20 20 20 20 20 2f 2a 20   expand      /* 
9ce0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
9cf0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
9d00: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
9d10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9d20: 20 20 20 20 20 20 20 69 66 20 28 28 66 69 6c 65         if ((file
9d30: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  Name == null) ||
9d40: 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29   (name == null))
9d50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9d60: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
9d70: 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
9d80: 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e        XmlDocumen
9d90: 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77  t document = new
9da0: 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d   XmlDocument();.
9db0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9dc0: 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66   document.Load(f
9dd0: 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72  ileName); /* thr
9de0: 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
9df0: 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e         XmlElemen
9e00: 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75  t element = docu
9e10: 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c  ment.SelectSingl
9e20: 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20  eNode(..        
9e30: 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
9e40: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
9e50: 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
9e60: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
9e70: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
9e80: 20 20 20 20 20 20 22 2f 63 6f 6e 66 69 67 75 72        "/configur
9e90: 61 74 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67  ation/appSetting
9ea0: 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27  s/add[@key='{0}'
9eb0: 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20  ]", name)) as.. 
9ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ed0: 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a 20   XmlElement; /* 
9ee0: 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
9ef0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
9f00: 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ement != null)..
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f30: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
9f40: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9f60: 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72  (element.HasAttr
9f70: 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d  ibute("value")).
9f80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f90: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65         value = e
9fa0: 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62  lement.GetAttrib
9fb0: 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d  ute("value");...
9fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9fd0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
9fe0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
9ff0: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
a000: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
a010: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a020: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
a030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a040: 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a 20 20   if (expand)..  
a050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a060: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
a070: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
a080: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
a090: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
a0a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a0b0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
a0c0: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
a0d0: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
a0e0: 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66  (value);..#endif
a0f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a100: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
a110: 3d 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66  = ReplaceXmlConf
a120: 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 66 69 6c  igFileTokens(fil
a130: 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a  eName, value);..
a140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a150: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a160: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
a170: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
a180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a190: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
a1a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a1b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
a1c0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
a1d0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
a1e0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
a1f0: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
a200: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
a210: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
a220: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
a230: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
a240: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
a250: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
a260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a270: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
a280: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a290: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
a2a0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
a2b0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
a2c0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
a2d0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
a2e0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
a2f0: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
a300: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
a310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a320: 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61    "pre-loader fa
a330: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
a340: 69 6e 67 20 5c 22 7b 30 7d 5c 22 20 76 61 6c 75  ing \"{0}\" valu
a350: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
a360: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72               "fr
a370: 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  om XML configura
a380: 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 31 7d 5c  tion file \"{1}\
a390: 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d 0a  ": {2}", name,..
a3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3b0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
a3c0: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
a3d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a3e0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
a3f0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
a400: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a410: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
a420: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
a430: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
a440: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
a450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
a460: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
a470: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
a4d0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a4e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a4f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
a510: 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e  mpts to determin
a520: 65 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61  e the target fra
a530: 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65  mework attribute
a540: 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 0d 0a   value that is..
a550: 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
a560: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 70  ated with the sp
a570: 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20  ecified managed 
a580: 61 73 73 65 6d 62 6c 79 2c 20 69 66 20 61 70 70  assembly, if app
a590: 6c 69 63 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  licable...      
a5a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a5b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a5c0: 20 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 22   name="assembly"
a5d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
a5e0: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
a5f0: 79 20 74 6f 20 72 65 61 64 20 74 68 65 20 74 61  y to read the ta
a600: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
a610: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 0d 0a  ttribute value..
a620: 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 2e 0d        /// from..
a630: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
a640: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
a650: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
a660: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
a670: 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d   the target fram
a680: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
a690: 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 73 70  value for the sp
a6a0: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
a6b0: 2f 2f 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  // managed assem
a6c0: 62 6c 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  bly -OR- null if
a6d0: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
a6e0: 74 65 72 6d 69 6e 65 64 2e 20 20 49 66 20 74 68  termined.  If th
a6f0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  is..      /// as
a700: 73 65 6d 62 6c 79 20 77 61 73 20 63 6f 6d 70 69  sembly was compi
a710: 6c 65 64 20 77 69 74 68 20 61 20 76 65 72 73 69  led with a versi
a720: 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46  on of the .NET F
a730: 72 61 6d 65 77 6f 72 6b 20 70 72 69 6f 72 20 74  ramework prior t
a740: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 65 72  o..      /// ver
a750: 73 69 6f 6e 20 34 2e 30 2c 20 74 68 65 20 76 61  sion 4.0, the va
a760: 6c 75 65 20 72 65 74 75 72 6e 65 64 20 4d 41 59  lue returned MAY
a770: 20 72 65 66 6c 65 63 74 20 74 68 61 74 20 76 65   reflect that ve
a780: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45  rsion of the .NE
a790: 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 72 61  T..      /// Fra
a7a0: 6d 65 77 6f 72 6b 20 69 6e 73 74 65 61 64 20 6f  mework instead o
a7b0: 66 20 74 68 65 20 6f 6e 65 20 61 73 73 6f 63 69  f the one associ
a7c0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 70  ated with the sp
a7d0: 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 0d  ecified managed.
a7e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d  .      /// assem
a7f0: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  bly...      /// 
a800: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
a810: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
a820: 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d   string GetAssem
a830: 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f  blyTargetFramewo
a840: 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  rk(..          A
a850: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
a860: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
a870: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a880: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21    if (assembly !
a890: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a8a0: 20 20 20 7b 0d 0a 23 69 66 20 4e 45 54 5f 34 30     {..#if NET_40
a8b0: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
a8c0: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
a8d0: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
a8e0: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
a8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a900: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
a910: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a920: 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
a930: 6d 62 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 0d  mbly.IsDefined(.
a940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a950: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
a960: 66 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  f(TargetFramewor
a970: 6b 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c  kAttribute), fal
a980: 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
a990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9b0: 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   TargetFramework
a9c0: 41 74 74 72 69 62 75 74 65 20 74 61 72 67 65 74  Attribute target
a9d0: 46 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20  Framework =..   
a9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9f0: 20 20 20 20 20 20 20 28 54 61 72 67 65 74 46 72         (TargetFr
aa00: 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65  ameworkAttribute
aa10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73               ass
aa30: 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41  embly.GetCustomA
aa40: 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20  ttributes(..    
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa60: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
aa70: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
aa80: 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73  Attribute), fals
aa90: 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  e)[0];....      
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aab0: 72 65 74 75 72 6e 20 74 61 72 67 65 74 46 72 61  return targetFra
aac0: 6d 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b  mework.Framework
aad0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
aae0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
aaf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ab00: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ab10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ab30: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
ab40: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
ab50: 20 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f     }..#elif NET_
ab60: 33 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  35..            
ab70: 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72    return ".NETFr
ab80: 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
ab90: 76 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45  v3.5";..#elif NE
aba0: 54 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20  T_20..          
abb0: 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54      return ".NET
abc0: 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
abd0: 6e 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66  n=v2.0";..#endif
abe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
abf0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
ac00: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
ac10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
ac20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
ac70: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ac80: 20 20 2f 2f 2f 20 41 63 63 65 70 74 73 20 61 20    /// Accepts a 
ac90: 6c 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d  long target fram
aca0: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
acb0: 76 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65 73 20  value and makes 
acc0: 69 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20  it into a..     
acd0: 20 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72 74 65   /// much shorte
ace0: 72 20 76 65 72 73 69 6f 6e 2c 20 73 75 69 74 61  r version, suita
acf0: 62 6c 65 20 66 6f 72 20 75 73 65 20 77 69 74 68  ble for use with
ad00: 20 4e 75 47 65 74 20 70 61 63 6b 61 67 65 73 2e   NuGet packages.
ad10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
ad20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ad30: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
ad40: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  alue">..      //
ad50: 2f 20 54 68 65 20 6c 6f 6e 67 20 74 61 72 67 65  / The long targe
ad60: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
ad70: 69 62 75 74 65 20 76 61 6c 75 65 20 74 6f 20 63  ibute value to c
ad80: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f  onvert...      /
ad90: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ada0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
adb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
adc0: 73 68 6f 72 74 20 74 61 72 67 65 74 20 66 72 61  short target fra
add0: 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65  mework attribute
ade0: 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c   value -OR- null
adf0: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20   if it cannot.. 
ae00: 20 20 20 20 20 2f 2f 2f 20 62 65 20 64 65 74 65       /// be dete
ae10: 72 6d 69 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72  rmined or conver
ae20: 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ted...      /// 
ae30: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
ae40: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
ae50: 20 73 74 72 69 6e 67 20 41 62 62 72 65 76 69 61   string Abbrevia
ae60: 74 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  teTargetFramewor
ae70: 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  k(..          st
ae80: 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
ae90: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
aea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
aeb0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
aec0: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
aee0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  rn value;....   
aef0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
af00: 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 4e  alue.Replace(".N
af10: 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73  ETFramework,Vers
af20: 69 6f 6e 3d 76 22 2c 20 22 6e 65 74 22 29 3b 0d  ion=v", "net");.
af30: 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65  .          value
af40: 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65   = value.Replace
af50: 28 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70  (".", String.Emp
af60: 74 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ty);....        
af70: 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 76 61    int index = va
af80: 6c 75 65 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29  lue.IndexOf(',')
af90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
afa0: 66 20 28 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d  f (index != -1).
afb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76  .              v
afc0: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 53 75 62  alue = value.Sub
afd0: 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29  string(0, index)
afe0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
aff0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
b000: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
b060: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b070: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65  .      /// If ne
b080: 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65  cessary, replace
b090: 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20  s all supported 
b0a0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
b0b0: 61 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20  able tokens..   
b0c0: 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69     /// with thei
b0d0: 72 20 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c  r associated val
b0e0: 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ues...      /// 
b0f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b100: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
b110: 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
b120: 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20    /// A setting 
b130: 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20  value read from 
b140: 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  an environment v
b150: 61 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ariable...      
b160: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
b170: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
b180: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
b190: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70   value of the <p
b1a0: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61  aramref name="va
b1b0: 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c  lue" /> will all
b1c0: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
b1d0: 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e    /// environmen
b1e0: 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e  t variable token
b1f0: 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20  s replaced.  No 
b200: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20  return value is 
b210: 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20  reserved..      
b220: 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20  /// to indicate 
b230: 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20  an error.  This 
b240: 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61  method cannot fa
b250: 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  il...      /// <
b260: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
b270: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
b280: 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65 45 6e  string ReplaceEn
b290: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
b2a0: 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20  eTokens(..      
b2b0: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
b2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
b2d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b2e0: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
b2f0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75  NullOrEmpty(valu
b300: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
b310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b320: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
b330: 20 3d 20 47 65 74 43 61 63 68 65 64 41 73 73 65   = GetCachedAsse
b340: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
b350: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b360: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
b370: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
b380: 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
b390: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b3a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
b3b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b3c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
b3e0: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
b3f0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
b400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
b410: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54  semblyDirectoryT
b420: 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29  oken, directory)
b430: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b440: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
b450: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
b460: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
b480: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
b490: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
b4b0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
b4c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
b4d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
b4e0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
b4f0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
b500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b510: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b530: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b550: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
b560: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
b570: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b590: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
b5a0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
b5b0: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
b5c0: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5e0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
b5f0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
b600: 72 65 70 6c 61 63 65 20 61 73 73 65 6d 62 6c 79  replace assembly
b610: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
b620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b630: 20 20 20 20 22 64 69 72 65 63 74 6f 72 79 20 74      "directory t
b640: 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b  oken: {0}", e));
b650: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
b660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b670: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
b680: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
b690: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
b6a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6c0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
b6d0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
b6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
b6f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
b700: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b710: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
b730: 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20  sembly assembly 
b740: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
b750: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b760: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
b790: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
b7a0: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 20 20  gAssembly();..  
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
b7c0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
b7d0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
b7e0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
b7f0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
b800: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
b810: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
b820: 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
b830: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
b840: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
b850: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
b860: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
b870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
b880: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
b890: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
b8b0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
b8c0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
b8d0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8f0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
b900: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
b910: 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72  , "Native librar
b920: 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
b950: 6c 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 65 78  led to obtain ex
b960: 65 63 75 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20  ecuting " +..   
b970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b980: 20 20 20 20 20 20 20 22 61 73 73 65 6d 62 6c 79         "assembly
b990: 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
b9a0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
b9b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9d0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
b9e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba00: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
ba10: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ba20: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
ba30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ba40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ba50: 20 73 74 72 69 6e 67 20 74 61 72 67 65 74 46 72   string targetFr
ba60: 61 6d 65 77 6f 72 6b 20 3d 20 41 62 62 72 65 76  amework = Abbrev
ba70: 69 61 74 65 54 61 72 67 65 74 46 72 61 6d 65 77  iateTargetFramew
ba80: 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ork(..          
ba90: 20 20 20 20 20 20 20 20 47 65 74 41 73 73 65 6d          GetAssem
baa0: 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f  blyTargetFramewo
bab0: 72 6b 28 61 73 73 65 6d 62 6c 79 29 29 3b 0d 0a  rk(assembly));..
bac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bad0: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
bae0: 6c 6c 4f 72 45 6d 70 74 79 28 74 61 72 67 65 74  llOrEmpty(target
baf0: 46 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20  Framework))..   
bb00: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb20: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
bb30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb50: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
bb60: 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  place(..        
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb80: 20 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72    TargetFramewor
bb90: 6b 54 6f 6b 65 6e 2c 20 74 61 72 67 65 74 46 72  kToken, targetFr
bba0: 61 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20 20 20 20  amework);..     
bbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bbc0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
bbd0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
bbe0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
bbf0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
bc00: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
bc10: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
bc20: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
bc30: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc50: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
bc60: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
bc70: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc90: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
bca0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bcc0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
bcd0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
bce0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
bcf0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd10: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
bd20: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22  urrentCulture, "
bd30: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22  Native library "
bd40: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61    "pre-loader fa
bd70: 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20  iled to replace 
bd80: 74 61 72 67 65 74 20 22 20 2b 0d 0a 20 20 20 20  target " +..    
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bda0: 20 20 20 20 20 20 20 20 20 20 22 66 72 61 6d 65            "frame
bdb0: 77 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22  work token: {0}"
bdc0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
bdd0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
bde0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be00: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
be10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
be30: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
be40: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be60: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
be70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
be90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
bea0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
beb0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
bec0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
bed0: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
bf20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
bf30: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
bf40: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
bf50: 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
bf60: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
bf70: 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65  tting, using the
bf80: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   XML..      /// 
bf90: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
bfa0: 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e  le and/or the en
bfb0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
bfc0: 6c 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72  les for the curr
bfd0: 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  ent..      /// p
bfe0: 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68  rocess and/or th
bff0: 65 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d  e current system
c000: 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65  , when available
c010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c020: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c030: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
c040: 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  name">..      //
c050: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
c060: 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20  e setting...    
c070: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
c080: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
c090: 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e   name="default">
c0a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
c0b0: 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75  value to be retu
c0c0: 72 6e 65 64 20 69 66 20 74 68 65 20 73 65 74 74  rned if the sett
c0d0: 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e  ing has not been
c0e0: 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d   set explicitly.
c0f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61  .      /// or ca
c100: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
c110: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
c120: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
c130: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
c140: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
c150: 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
c160: 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c   -OR- the defaul
c170: 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69 65  t value specifie
c180: 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d by..      /// 
c190: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
c1a0: 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69  default" /> if i
c1b0: 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  t has not been s
c1c0: 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72  et explicitly or
c1d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e  ..      /// cann
c1e0: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
c1f0: 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61  .  By default, a
c200: 6c 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f  ll references to
c210: 20 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20   existing..     
c220: 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   /// environment
c230: 20 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20   variables will 
c240: 62 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74  be expanded to t
c250: 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69  heir correspondi
c260: 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20  ng values..     
c270: 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20   /// within the 
c280: 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75  value to be retu
c290: 72 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68  rned unless eith
c2a0: 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e  er the "No_Expan
c2b0: 64 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  d" or..      ///
c2c0: 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72   "No_Expand_<par
c2d0: 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65  amref name="name
c2e0: 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  " />" environmen
c2f0: 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  t variable is se
c300: 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  t [to..      ///
c310: 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20   anything]...   
c320: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
c330: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
c340: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
c350: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
c360: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
c370: 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69  ng name,    /* i
c380: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
c390: 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20  string @default 
c3a0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
c3b0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
c3c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
c3d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
c3e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c3f0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c400: 20 49 66 20 74 68 65 20 73 70 65 63 69 61 6c 20   If the special 
c410: 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74  "No_SQLiteGetSet
c420: 74 69 6e 67 56 61 6c 75 65 22 20 65 6e 76 69 72  tingValue" envir
c430: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
c440: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
c450: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 20 61  ble is set [to a
c460: 6e 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d  nything], this m
c470: 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79  ethod will alway
c480: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  s..          // 
c490: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 65        return the
c4a0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d   default value..
c4b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
c4c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
c4d0: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
c4e0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
c4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c500: 20 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53    "No_SQLiteGetS
c510: 65 74 74 69 6e 67 56 61 6c 75 65 22 29 20 21 3d  ettingValue") !=
c520: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
c530: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c540: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
c550: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  lt;..          }
c560: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
c570: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
c5c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d           if (nam
c5d0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
c5e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c5f0: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20   @default;....  
c600: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
c610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c650: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
c660: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
c670: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
c680: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c690: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c6a0: 20 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f   We are about to
c6b0: 20 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20   read a setting 
c6c0: 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 65  value from the e
c6d0: 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20  nvironment..    
c6e0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
c6f0: 72 20 70 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20  r possibly from 
c700: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
c710: 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61  ation file; crea
c720: 74 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  te or..         
c730: 20 2f 2f 20 20 20 20 20 20 20 69 6e 63 72 65 6d   //       increm
c740: 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69  ent the appropri
c750: 61 74 65 20 73 74 61 74 69 73 74 69 63 20 6e 6f  ate statistic no
c760: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
c770: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
c780: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53  gData.IncrementS
c790: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28  ettingReadCount(
c7a0: 6e 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23  name, false);..#
c7b0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
c7c0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c7d0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
c7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c820: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
c830: 20 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 20   expand = true; 
c840: 2f 2a 20 53 48 41 52 45 44 3a 20 45 6e 76 69 72  /* SHARED: Envir
c850: 6f 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c  onment -AND- XML
c860: 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f   config file. */
c870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
c880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8c0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
c8d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c8e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
c8f0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
c900: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
c910: 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
c920: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
c930: 74 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78  tVariable("No_Ex
c940: 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  pand") != null).
c950: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
c960: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61              expa
c970: 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  nd = false;..   
c980: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
c990: 20 20 20 20 65 6c 73 65 20 69 66 20 28 45 6e 76      else if (Env
c9a0: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
c9b0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
c9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c9d0: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
c9e0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
c9f0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
ca00: 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca20: 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c  "No_Expand_{0}",
ca30: 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29   name)) != null)
ca40: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
ca60: 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  and = false;..  
ca70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ca80: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45         value = E
ca90: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
caa0: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
cab0: 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  e(name);....    
cac0: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
cad0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
cae0: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
caf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cb00: 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d      if (expand).
cb10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb20: 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72     value = Envir
cb30: 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76  onment.ExpandEnv
cb40: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
cb50: 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  s(value);....   
cb60: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
cb70: 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f   = ReplaceEnviro
cb80: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b  nmentVariableTok
cb90: 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ens(value);..   
cba0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cbb0: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
cbc0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
cbd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
cbe0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
cbf0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
cc00: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
cc10: 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f   "No_SQLiteXmlCo
cc20: 6e 66 69 67 46 69 6c 65 22 20 65 6e 76 69 72 6f  nfigFile" enviro
cc30: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
cc40: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  s..          // 
cc50: 20 20 20 20 20 20 73 65 74 20 5b 74 6f 20 61 6e        set [to an
cc60: 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65  ything], this me
cc70: 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45 52 20  thod will NEVER 
cc80: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  read from the.. 
cc90: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
cca0: 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74    XML configurat
ccb0: 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ion file...     
ccc0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ccd0: 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
cce0: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
ccf0: 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f              "No_
cd10: 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46  SQLiteXmlConfigF
cd20: 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ile") != null)..
cd30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cd40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cd50: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
cd60: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
cd70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
cd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
cdd0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
cde0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
cdf0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
ce00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
ce10: 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62   NOTE: We are ab
ce20: 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65  out to read a se
ce30: 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d  tting value from
ce40: 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20   the XML..      
ce50: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e      //       con
ce60: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b  figuration file;
ce70: 20 63 72 65 61 74 65 20 6f 72 20 69 6e 63 72 65   create or incre
ce80: 6d 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72  ment the appropr
ce90: 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  iate..          
cea0: 2f 2f 20 20 20 20 20 20 20 73 74 61 74 69 73 74  //       statist
ceb0: 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ic now...       
cec0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ced0: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
cee0: 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43  mentSettingReadC
cef0: 6f 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75 65 29  ount(name, true)
cf00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
cf10: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
cf20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
cf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
cf80: 72 65 74 75 72 6e 20 47 65 74 53 65 74 74 69 6e  return GetSettin
cf90: 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66  gValueViaXmlConf
cfa0: 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20  igFile(..       
cfb0: 20 20 20 20 20 20 20 47 65 74 43 61 63 68 65 64         GetCached
cfc0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
cfd0: 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61  e(), name, @defa
cfe0: 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20  ult, expand);.. 
cff0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
d050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d070: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
d080: 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53  c string ListToS
d090: 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69  tring(IList<stri
d0a0: 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20  ng> list)..     
d0b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
d0c0: 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d   (list == null).
d0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
d0e0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
d0f0: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42           StringB
d100: 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20  uilder result = 
d110: 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
d120: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
d130: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
d140: 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73  g element in lis
d150: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
d160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
d170: 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75  f (element == nu
d180: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
d190: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
d1a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d1b0: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
d1c0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
d1d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
d1e0: 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d  lt.Append(' ');.
d1f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d200: 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65   result.Append(e
d210: 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  lement);..      
d220: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
d230: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
d240: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
d250: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
d260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
d2b0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
d2c0: 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63   int CheckForArc
d2d0: 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
d2e0: 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20  tforms(..       
d2f0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
d300: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
d310: 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ref List<string>
d320: 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20   matches..      
d330: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
d340: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65            int re
d350: 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  sult = 0;....   
d360: 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68         if (match
d370: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
d380: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
d390: 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  es = new List<st
d3a0: 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ring>();....    
d3b0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
d3c0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
d3d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d3e0: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
d3f0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
d400: 79 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d  y(directory) &&.
d410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d420: 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63     (processorArc
d430: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
d440: 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  ms != null))..  
d450: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d470: 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c   foreach (KeyVal
d480: 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73  uePair<string, s
d490: 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20  tring> pair..   
d4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4b0: 20 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63           in proc
d4c0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d4d0: 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20  ePlatforms)..   
d4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
d4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d500: 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65          if (Dire
d510: 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79  ctory.Exists(May
d520: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
d530: 72 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65  rectory, pair.Ke
d540: 79 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y)))..          
d550: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d570: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
d580: 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d  .Add(pair.Key);.
d590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d5a0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
d5b0: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
d5d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d5e0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
d5f0: 6c 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65  lue = pair.Value
d600: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d610: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
d620: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
d630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d640: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
d650: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
d660: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d670: 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73  Directory.Exists
d680: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
d690: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c  h(directory, val
d6a0: 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ue)))..         
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6d0: 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
d6e0: 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20  s.Add(value);.. 
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d700: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
d710: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
d720: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d750: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
d760: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
d770: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
d780: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
d790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
d7e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
d7f0: 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c  ool CheckAssembl
d800: 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20  yCodeBase(..    
d810: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
d820: 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20  ssembly,..      
d830: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66      ref string f
d840: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
d850: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
d860: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d870: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d880: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
d890: 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8b0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
d8c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d8d0: 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65   string codeBase
d8e0: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65   = assembly.Code
d8f0: 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Base;....       
d900: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
d910: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
d920: 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20  codeBase))..    
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d940: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
d950: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69               Uri
d960: 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63   uri = new Uri(c
d970: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
d980: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
d990: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20  localFileName = 
d9a0: 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a  uri.LocalPath;..
d9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d9c0: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
d9d0: 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29  (localFileName))
d9e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d9f0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
da00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
da10: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
da20: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
da30: 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20  rectoryName(..  
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da50: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20  localFileName); 
da60: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
da80: 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  ing xmlConfigFil
da90: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
daa0: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
dac0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
dad0: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
daf0: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c  (File.Exists(xml
db00: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db20: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
db30: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
db40: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
db60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
db90: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
dba0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
dbb0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbd0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
dbe0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
dbf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dc00: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
dc10: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
dc20: 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20  oader found XML 
dc30: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
dc40: 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
dc70: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
dc80: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
dc90: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcb0: 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69          xmlConfi
dcc0: 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20  gFileName)); /* 
dcd0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd00: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
dd10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd30: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
dd40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dd50: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
dd60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd70: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c      fileName = l
dd80: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  ocalFileName;.. 
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dda0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ddc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddd0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
dde0: 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ches = null;....
ddf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
de00: 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74   (CheckForArchit
de10: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
de20: 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72  rms(directory, r
de30: 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29  ef matches) > 0)
de40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de50: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
de60: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
de70: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
de90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dea0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
dec0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
ded0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
dee0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df00: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
df10: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
df20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df30: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
df40: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
df50: 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69  oader found nati
df60: 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ve sub-directori
df70: 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  es " +..        
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df90: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
dfa0: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
dfb0: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
dfc0: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
dfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfe0: 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74          ListToSt
dff0: 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b  ring(matches)));
e000: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e020: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
e030: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e060: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
e070: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
e080: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
e090: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
e0a0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
e0b0: 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65   = localFileName
e0c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e0d0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
e0e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e0f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e100: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
e110: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
e120: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
e130: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
e140: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
e150: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
e160: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
e170: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
e180: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
e190: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
e1a0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e1b0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
e1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1d0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
e1e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e1f0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
e200: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
e210: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
e220: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
e230: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
e240: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
e250: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
e260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
e270: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
e280: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
e290: 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61  to check code ba
e2a0: 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  se " +..        
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
e2c0: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
e2d0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
e2e0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
e2f0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
e300: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
e310: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e340: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
e350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e360: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
e370: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e380: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
e390: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
e3a0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
e3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3f0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
e400: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
e410: 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65    /// Resets the
e420: 20 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79   cached assembly
e430: 20 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65   directory value
e440: 2c 20 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74  , thus forcing t
e450: 68 65 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f  he next..      /
e460: 2f 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20  // call to <see 
e470: 63 72 65 66 3d 22 47 65 74 43 61 63 68 65 64 41  cref="GetCachedA
e480: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
e490: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72  " /> method to r
e4a0: 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75  ely..      /// u
e4b0: 70 6f 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65  pon the <see cre
e4c0: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
e4d0: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
e4e0: 6f 64 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d  od to fetch the.
e4f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d  .      /// assem
e500: 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  bly directory...
e510: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e520: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
e530: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
e540: 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d  ResetCachedAssem
e550: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  blyDirectory()..
e560: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e570: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
e580: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
e590: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
e5a0: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
e5b0: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
e5c0: 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63  "Method_ResetCac
e5d0: 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
e5e0: 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory");..#endif.
e5f0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
e600: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
e610: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
e620: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
e630: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e640: 20 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d       cachedAssem
e650: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  blyDirectory = n
e660: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
e670: 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69      noAssemblyDi
e680: 72 65 63 74 6f 72 79 20 3d 20 66 61 6c 73 65 3b  rectory = false;
e690: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
e6a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
e700: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e710: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
e720: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
e730: 65 20 63 61 63 68 65 64 20 64 69 72 65 63 74 6f  e cached directo
e740: 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
e750: 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20  bly currently.. 
e760: 20 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20 65       /// being e
e770: 78 65 63 75 74 65 64 2c 20 69 66 20 61 76 61 69  xecuted, if avai
e780: 6c 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63  lable.  If the c
e790: 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64  ached assembly d
e7a0: 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65 0d 0a  irectory value..
e7b0: 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 74        /// is not
e7c0: 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20   available, the 
e7d0: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73  <see cref="GetAs
e7e0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
e7f0: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d   /> method will.
e800: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73  .      /// be us
e810: 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  ed to obtain the
e820: 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74   assembly direct
e830: 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ory...      /// 
e840: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e850: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
e860: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
e870: 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
e880: 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
e890: 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
e8a0: 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d  ed -OR- null if.
e8b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61  .      /// it ca
e8c0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
e8d0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
e8e0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
e8f0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e900: 73 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64  string GetCached
e910: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
e920: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
e930: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
e940: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
e950: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
e960: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
e970: 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43  .IncrementOtherC
e980: 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74  ount("Method_Get
e990: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
e9a0: 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64  rectory");..#end
e9b0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
e9c0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
e9d0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
e9e0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
e9f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ea00: 20 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68          if (cach
ea10: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
ea20: 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
ea30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea40: 72 65 74 75 72 6e 20 63 61 63 68 65 64 41 73 73  return cachedAss
ea50: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
ea60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ea70: 20 69 66 20 28 6e 6f 41 73 73 65 6d 62 6c 79 44   if (noAssemblyD
ea80: 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20  irectory)..     
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
eaa0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
eab0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
eac0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73      return GetAs
ead0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
eae0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
eaf0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
eb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
eb40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
eb50: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
eb60: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
eb70: 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  ns the directory
eb80: 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
eb90: 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e  y currently bein
eba0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65  g..      /// exe
ebb0: 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  cuted...      //
ebc0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ebd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
ebe0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
ebf0: 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
ec00: 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
ec10: 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63  ently being exec
ec20: 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  uted -OR- null i
ec30: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  f..      /// it 
ec40: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
ec50: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
ec60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
ec70: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
ec80: 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65  c string GetAsse
ec90: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d  mblyDirectory().
eca0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
ecb0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
ecc0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
ecd0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
ece0: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
ecf0: 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74  rementOtherCount
ed00: 28 22 4d 65 74 68 6f 64 5f 47 65 74 41 73 73 65  ("Method_GetAsse
ed10: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
ed20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
ed30: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ed40: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
ed50: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
ed70: 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20  mbly assembly = 
ed80: 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63  Assembly.GetExec
ed90: 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b  utingAssembly();
eda0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
edb0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d    if (assembly =
edc0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
edd0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
edf0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
ee00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ee10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ee20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
ee30: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
ee40: 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
ee50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ee60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ee70: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
ee80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ee90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
eea0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
eeb0: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  me = null;....#i
eec0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
eed0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
eee0: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
eef0: 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79  blyName assembly
ef00: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Name = assembly.
ef10: 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  GetName();....  
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ef30: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  assemblyName == 
ef40: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
ef50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ef60: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
ef70: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
ef80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73              noAs
efb0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20  semblyDirectory 
efc0: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
efd0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
efe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eff0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
f000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f020: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65   fileName = asse
f030: 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73  mblyName.CodeBas
f040: 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
f050: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68           if (!Ch
f060: 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42  eckAssemblyCodeB
f070: 61 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65  ase(assembly, re
f080: 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  f fileName))..  
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0a0: 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
f0b0: 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23  bly.Location;..#
f0c0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
f0d0: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
f0e0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
f0f0: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
f100: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
f120: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
f130: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
f140: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f160: 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63   noAssemblyDirec
f170: 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20  tory = true;..  
f180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f190: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
f1a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
f1b0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
f1c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
f1d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
f1e0: 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
f1f0: 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66  tDirectoryName(f
f200: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
f210: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
f220: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
f230: 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d  pty(directory)).
f240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
f250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f260: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
f270: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
f280: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2a0: 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
f2b0: 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65  Directory = true
f2c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
f2d0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f2f0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
f300: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f310: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
f320: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
f330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f340: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f350: 20 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d       cachedAssem
f360: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 64  blyDirectory = d
f370: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
f380: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
f390: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f3a0: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20  rn directory;.. 
f3b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
f3c0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
f3d0: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
f3e0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
f3f0: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
f400: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
f410: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
f420: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
f430: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
f440: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
f450: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
f460: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
f470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
f480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f490: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
f4a0: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
f4b0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
f4c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f4d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
f4e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
f4f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
f500: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
f510: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
f520: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67  ader failed to g
f530: 65 74 20 64 69 72 65 63 74 6f 72 79 20 22 20 2b  et directory " +
f540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f550: 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72          "for cur
f560: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
f570: 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c   assembly: {0}",
f580: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
f590: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
f5a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f5b0: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
f5c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
f5e0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
f5f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
f600: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
f610: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
f620: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
f630: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
f640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f650: 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
f660: 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
f670: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f680: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
f690: 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  l;..      }..   
f6a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
f6b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
f6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f700: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
f710: 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76  n Optional Nativ
f720: 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79  e SQLite Library
f730: 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64   Pre-Loading Cod
f740: 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  e..      //..   
f750: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
f760: 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f  e are looking fo
f770: 72 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  r the standard S
f780: 51 4c 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69  QLite DLL ("sqli
f790: 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20  te3.dll"),..    
f7a0: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69    //       the i
f7b0: 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c  nterop DLL ("SQL
f7c0: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
f7d0: 29 2c 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e  ), or we are run
f7e0: 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20  ning on the..   
f7f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54     //       .NET
f800: 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
f810: 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e  rk, we should in
f820: 63 6c 75 64 65 20 74 68 69 73 20 63 6f 64 65 20  clude this code 
f830: 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20  (only if the..  
f840: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61      //       fea
f850: 74 75 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c  ture has actuall
f860: 79 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e  y been enabled).
f870: 20 20 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c    This code woul
f880: 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20  d be totally..  
f890: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64      //       red
f8a0: 75 6e 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d  undant if this m
f8b0: 6f 64 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62  odule has been b
f8c0: 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20  undled into the 
f8d0: 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20  mixed-mode..    
f8e0: 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d    //       assem
f8f0: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  bly...      //..
f900: 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
f910: 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52  ARD || USE_INTER
f920: 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f  OP_DLL || PLATFO
f930: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f940: 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d  ORK....      //.
f950: 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
f960: 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20  Only compile in 
f970: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
f980: 72 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65  ry pre-load code
f990: 20 69 66 20 74 68 65 20 66 65 61 74 75 72 65 0d   if the feature.
f9a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
f9b0: 68 61 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  has been enabled
f9c0: 20 66 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e   for this build.
f9d0: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20  ..      //..#if 
f9e0: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
f9f0: 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f  IBRARY..      //
fa00: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
fa10: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
fa20: 6f 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  of the environme
fa30: 6e 74 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74  nt variable cont
fa40: 61 69 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65  aining the proce
fa50: 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ssor..      /// 
fa60: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
fa70: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
fa80: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
fa90: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
faa0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
fab0: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
fac0: 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49   PROCESSOR_ARCHI
fad0: 54 45 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20  TECTURE =..     
fae0: 20 20 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f       "PROCESSOR_
faf0: 41 52 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a  ARCHITECTURE";..
fb00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb50: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
fb60: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
fb70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
fb80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
fb90: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
fba0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  e file name for 
fbb0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
fbc0: 65 20 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c  e library or nul
fbd0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
fbe0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
fbf0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fc00: 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61  string _SQLiteNa
fc10: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
fc20: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  me = null;....  
fc30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
fc80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
fc90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
fca0: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
fcb0: 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e  handle for the n
fcc0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
fcd0: 72 61 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75  rary or the valu
fce0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74  e..      /// Int
fcf0: 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20  Ptr.Zero...     
fd00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
fd10: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
fd20: 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51  tatic IntPtr _SQ
fd30: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
fd40: 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e  Handle = IntPtr.
fd50: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e  Zero;..      #en
fd60: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
fd70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
fdc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
fdd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
fde0: 6d 69 6e 65 73 20 74 68 65 20 62 61 73 65 20 66  mines the base f
fdf0: 69 6c 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75  ile name (withou
fe00: 74 20 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20  t any directory 
fe10: 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20  information)..  
fe20: 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20      /// for the 
fe30: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
fe40: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
fe50: 6c 6f 61 64 65 64 20 62 79 20 74 68 69 73 20 63  loaded by this c
fe60: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lass...      ///
fe70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
fe80: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
fe90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
fea0: 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  base file name f
feb0: 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
fec0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20  Lite library to 
fed0: 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79  be pre-loaded by
fee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73  ..      /// this
fef0: 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c   class -OR- null
ff00: 20 69 66 20 69 74 73 20 76 61 6c 75 65 20 63 61   if its value ca
ff10: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
ff20: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
ff30: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
ff40: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ff50: 20 73 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76   string GetNativ
ff60: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
ff70: 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  Only()..      {.
ff80: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
ff90: 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d  g fileNameOnly =
ffa0: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
ffb0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
ffc0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
ffd0: 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
ffe0: 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  nly", null);....
fff0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
10000 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75  leNameOnly != nu
10010 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
10020 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
10030 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20  meOnly;....     
10040 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49       return SQLI
10050 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41  TE_DLL; /* COMPA
10060 54 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  T */..      }...
10070 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
10080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
100d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
100e0 20 53 65 61 72 63 68 65 73 20 66 6f 72 20 74 68   Searches for th
100f0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
10100 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65 20 64  library in the d
10110 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
10120 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ing..      /// t
10130 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72  he assembly curr
10140 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63  ently being exec
10150 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20  uted as well as 
10160 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
10170 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f  ry..      /// fo
10180 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70  r the current ap
10190 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
101a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
101b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
101c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
101d0 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d  baseDirectory">.
101e0 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20  .      /// Upon 
101f0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
10200 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20  rameter will be 
10210 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65  modified to refe
10220 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20  r to the base.. 
10230 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f       /// directo
10240 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
10250 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
10260 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
10270 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10280 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10290 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
102a0 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
102b0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
102c0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
102d0 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64  eter will be mod
102e0 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74  ified to refer t
102f0 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20  o the name..    
10300 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d    /// of the imm
10310 65 64 69 61 74 65 20 64 69 72 65 63 74 6f 72 79  ediate directory
10320 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65   (i.e. the offse
10330 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
10340 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20  directory)..    
10350 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67    /// containing
10360 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
10370 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
10380 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10390 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
103a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
103b0 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73  Non-zero (succes
103c0 73 29 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  s) if the native
103d0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
103e0 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72  was found; other
103f0 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
10400 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e   zero (failure).
10410 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
10420 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
10430 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
10440 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63  l SearchForDirec
10450 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  tory(..         
10460 20 72 65 66 20 73 74 72 69 6e 67 20 62 61 73 65   ref string base
10470 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20  Directory,      
10480 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
10490 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
104a0 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
104b0 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a  tecture /* out *
104c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
104d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
104e0 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
104f0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
10500 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
10510 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68  dSQLite_NoSearch
10520 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  ForDirectory", n
10530 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
10540 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10550 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10560 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42   false; /* DISAB
10570 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LED */..        
10580 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10590 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
105a0 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e  / NOTE: Determin
105b0 65 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20  e the base file 
105c0 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
105d0 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
105e0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
105f0 2f 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20  /       If this 
10600 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20  is not known by 
10610 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63  this class, we c
10620 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d  annot continue..
10630 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
10640 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
10650 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
10660 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
10670 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a  ileNameOnly();..
10680 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
10690 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20  fileNameOnly == 
106a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
106b0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
106c0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
106d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
106e0 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
106f0 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69   list of base di
10700 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72  rectories and pr
10710 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d  ocessor/platform
10720 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10730 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65       names.  The
10740 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65  se lists will be
10750 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f   used to help lo
10760 63 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d  cate the native.
10770 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
10780 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20      SQLite core 
10790 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65  library (or inte
107a0 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f  rop assembly) to
107b0 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a   pre-load into..
107c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
107d0 20 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e     this process.
107e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
107f0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
10800 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d  [] directories =
10810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10820 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72    GetAssemblyDir
10830 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21  ectory(),..#if !
10840 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10850 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
10860 20 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61           AppDoma
10870 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
10880 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  .BaseDirectory,.
10890 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
108a0 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     };....       
108b0 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44     string[] subD
108c0 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a  irectories = {..
108d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
108e0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
108f0 65 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61  ecture(), GetPla
10900 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d  tformName(null).
10910 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d  .          };...
10920 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
10930 63 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63  ch (string direc
10940 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72  tory in director
10950 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
10960 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10970 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d   if (directory =
10980 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10990 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
109a0 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
109b0 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
109c0 74 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f  tring subDirecto
109d0 72 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f  ry in subDirecto
109e0 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ries)..         
109f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10a00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75            if (su
10a10 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  bDirectory == nu
10a20 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
10a30 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
10a40 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
10a50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
10a60 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
10a70 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79  pDllFileName(May
10a80 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
10a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10aa0 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69        MaybeCombi
10ab0 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
10ac0 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c  , subDirectory),
10ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ae0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
10af0 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
10b00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
10b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10b20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
10b30 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69  he SQLite DLL fi
10b40 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74 75 72  le exists, retur
10b50 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
10b70 20 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20         Prior to 
10b80 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74  returning, set t
10b90 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
10ba0 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  y and..         
10bb0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
10bc0 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
10bd0 69 74 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c  itecture to refl
10be0 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e  ect the location
10bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65      //       whe
10c10 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e  re it was found.
10c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c30 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10c40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
10c50 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
10c60 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
10c70 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
10c80 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
10c90 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
10ca0 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
10cb0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cf0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
10d00 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
10d10 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
10d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d30 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
10d40 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
10d50 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d70 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
10d80 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
10d90 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66  r found native f
10da0 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ile " +..       
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dc0 20 20 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b         "name \"{
10dd0 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20  0}\", returning 
10de0 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c  directory \"{1}\
10df0 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20  " and " +..     
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e10 20 20 20 20 20 20 20 20 20 22 73 75 62 2d 64 69           "sub-di
10e20 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e  rectory \"{2}\".
10e30 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64  ..", fileName, d
10e40 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
10e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e60 20 20 20 20 20 20 20 20 20 73 75 62 44 69 72 65           subDire
10e70 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f  ctory)); /* thro
10e80 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
10e90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10eb0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
10ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ed0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
10ef0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
10f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f10 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
10f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f30 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
10f40 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72  ctory = director
10f50 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
10f60 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
10f70 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
10f80 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d  = subDirectory;.
10f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10fa0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
10fb0 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d  ue; /* FOUND */.
10fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10fd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10fe0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10ff0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
11000 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a  return false; /*
11010 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20   NOT FOUND */.. 
11020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11070 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
11080 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11090 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
110a0 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
110b0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
110c0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
110d0 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
110e0 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a     /// domain...
110f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11100 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11110 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
11120 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
11130 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
11140 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
11150 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20  ion domain -OR- 
11160 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
11170 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
11180 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
11190 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
111a0 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
111b0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
111c0 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
111d0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
111e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
111f0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
11200 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
11210 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79  te_BaseDirectory
11220 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
11230 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  riable..        
11240 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65    //       is se
11250 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
11260 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20  im for the base 
11270 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
11280 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11290 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
112a0 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e  tory = GetSettin
112b0 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53  gValue("PreLoadS
112c0 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
112d0 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ory",..         
112e0 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20       null);.... 
112f0 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
11300 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
11310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
11320 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
11330 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11340 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11350 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
11360 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
11370 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
11380 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
11390 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
113a0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
113b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
113c0 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
113d0 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
113e0 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  then attempt to 
113f0 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  use the..       
11400 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65     //       dire
11410 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
11420 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65   the currently e
11430 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
11440 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  y..          // 
11450 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74        (i.e. Syst
11460 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20  em.Data.SQLite) 
11470 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61  intsead of the a
11480 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
11490 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
114a0 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63  omain base direc
114b0 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
114c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
114d0 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
114e0 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
114f0 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
11500 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
11510 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  yDirectory", nul
11520 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
11530 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11540 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
11550 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
11560 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
11570 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11580 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
11590 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
115a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
115b0 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
115c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
115d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
115e0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
115f0 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
11600 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20   using the base 
11610 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
11620 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
11630 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70       current app
11640 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
11650 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
11660 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11670 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
11680 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
11690 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a  ectory;..#else..
116a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
116b0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
116c0 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
116d0 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
116e0 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
116f0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
11700 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
11710 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
11720 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  ng assembly...  
11730 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11740 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
11750 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
11760 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y();..#endif..  
11770 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
11780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
117c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
117d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
117e0 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
117f0 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d  nes if the dynam
11800 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
11810 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72  file name requir
11820 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20  es a suffix..   
11830 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20     /// and adds 
11840 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  it if necessary.
11850 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11860 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11870 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
11880 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
11890 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
118a0 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  l dynamic link l
118b0 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
118c0 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
118d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
118e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
118f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
11900 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   The dynamic lin
11910 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
11920 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f  ame, possibly mo
11930 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64  dified to includ
11940 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e an..      /// 
11950 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20  extension...    
11960 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
11970 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
11980 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69  static string Fi
11990 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d  xUpDllFileName(.
119a0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
119b0 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e  g fileName /* in
119c0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
119d0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
119e0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
119f0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
11a00 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
11a10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11a20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72        if (Helper
11a30 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
11a40 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
11a50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11a60 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
11a70 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
11a80 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
11a90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
11ab0 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
11ac0 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
11ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11b00 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
11b10 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
11b20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11b30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11b40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11b50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11b60 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
11b70 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
11b80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
11b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11bd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11be0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
11bf0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
11c00 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
11c10 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
11c20 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
11c30 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
11c40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11c50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11c60 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
11c70 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
11c80 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
11c90 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
11ca0 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
11cb0 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
11cc0 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
11cd0 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
11ce0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
11cf0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
11d00 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
11d10 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
11d20 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
11d30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
11d40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
11d50 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
11d60 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
11d70 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
11d80 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
11d90 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11da0 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
11db0 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
11dc0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
11dd0 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
11de0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
11df0 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
11e00 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11e10 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
11e20 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11e30 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
11e40 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
11e50 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
11e60 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
11e70 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c  hitecture", null
11e80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11e90 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
11ea0 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
11eb0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
11ec0 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
11ed0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
11ee0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
11ef0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
11f00 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
11f10 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
11f20 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
11f30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
11f40 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11f50 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
11f60 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
11f70 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c  RCHITECTURE, nul
11f80 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
11f90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
11fe0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11ff0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
12000 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12010 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b    // HACK: Check
12020 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69   for an "impossi
12030 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20  ble" situation. 
12040 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20   If the pointer 
12050 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20  size..          
12060 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62  //       is 32-b
12070 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73  its, the process
12080 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
12090 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34  cannot be "AMD64
120a0 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  "...          //
120b0 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63         In that c
120c0 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f  ase, we are almo
120d0 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74  st certainly hit
120e0 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68  ting a bug in th
120f0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
12100 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20        operating 
12110 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69  system and/or Vi
12120 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
12130 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20   causes the..   
12140 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12150 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
12160 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65  ECTURE environme
12170 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63  nt variable to c
12180 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
12190 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
121a0 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f  rong value in so
121b0 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  me circumstances
121c0 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20  .  Please refer 
121d0 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20  to ticket..     
121e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39       //       [9
121f0 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66  ac9862611] for f
12200 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
12210 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  on...          /
12220 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
12230 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d  ((IntPtr.Size ==
12240 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26   sizeof(int)) &&
12250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12260 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72  String.Equals(pr
12270 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
12280 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20  ure, "AMD64",.. 
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
122b0 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
122c0 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
122d0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
122e0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
122f0 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
12300 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12310 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
12320 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e  OTE: When tracin
12330 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61  g is enabled, sa
12340 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c  ve the originall
12350 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20  y detected..    
12360 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
12370 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
12380 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65  hitecture before
12390 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20   changing it... 
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
123b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
123c0 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65  tring savedProce
123d0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
123e0 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68   = processorArch
123f0 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69  itecture;..#endi
12400 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
12410 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12420 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
12430 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61   know that opera
12440 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61  ting systems tha
12450 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22  t return "AMD64"
12460 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   as..           
12470 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
12480 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
12490 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61  ecture are actua
124a0 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f  lly a superset o
124b0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
124c0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78   //       the "x
124d0 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  86" processor ar
124e0 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72  chitecture; ther
124f0 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20  efore, return.. 
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
12510 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e        "x86" when
12520 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a   the pointer siz
12530 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20  e is 32-bits... 
12540 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
12550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
12560 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
12570 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d  ture = "x86";...
12580 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
12590 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
125a0 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
125b0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
125c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
125d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
125e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
125f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
12600 6f 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61  ow that we hit a
12610 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20   fairly unusual 
12620 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d  situation (i.e..
12630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12640 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
12650 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f  "wrong" processo
12660 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77  r architecture w
12670 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20  as detected)... 
12680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12690 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
126a0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
126b0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
126c0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
126d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
126e0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
126f0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
12700 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
12720 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
12730 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64  -loader detected
12740 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72   {0}-bit pointer
12750 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
12760 20 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a              "siz
12770 65 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72  e with processor
12780 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
12790 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b  {1}\", using " +
127a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127b0 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73          "process
127c0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
127d0 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e  \"{2}\" instead.
127e0 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ..",..          
127f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
12800 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62  tr.Size * 8 /* b
12810 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f  its */, savedPro
12820 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12830 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
12840 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
12850 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12860 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
12870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
12880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12890 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
128a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
128b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
128c0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
128d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
128e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
128f0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
12900 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
12910 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
12920 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
12930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12940 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12950 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68    // NOTE: On th
12960 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  e .NET Compact F
12970 72 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70  ramework, attemp
12980 74 20 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74  t to use the nat
12990 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
129a0 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33     //       Win3
129b0 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28  2 API function (
129c0 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68  via P/Invoke) th
129d0 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75  at can provide u
129e0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
129f0 20 2f 2f 20 20 20 20 20 20 20 77 69 74 68 20 74   //       with t
12a00 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
12a10 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20  hitecture...    
12a20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12a30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a60 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12a70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
12a80 45 3a 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66  E: The output of
12a90 20 74 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e   the GetSystemIn
12aa0 66 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c  fo function will
12ab0 20 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20   be..           
12ac0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12ad0 70 6c 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e  placed here.  On
12ae0 6c 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ly the processor
12af0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69   architecture fi
12b00 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  eld..           
12b10 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12b20 69 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20  is used by this 
12b30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
12b40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b60 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
12b70 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54 45 4d  hodsWin32.SYSTEM
12b80 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f  _INFO systemInfo
12b90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12ba0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
12bc0 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65 20  NOTE: Query the 
12bd0 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
12be0 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c  on via P/Invoke,
12bf0 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20   thus..         
12c00 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
12c10 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74    filling the st
12c20 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
12c30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c50 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
12c60 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74 53 79  thodsWin32.GetSy
12c70 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73  stemInfo(out sys
12c80 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
12c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12ca0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12cb0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65       // NOTE: Re
12cc0 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65 73 73  turn the process
12cd0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
12ce0 76 61 6c 75 65 20 61 73 20 61 20 73 74 72 69 6e  value as a strin
12cf0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
12d00 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12d10 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
12d20 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
12d30 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
12d40 20 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65             syste
12d50 6d 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72  mInfo.wProcessor
12d60 41 72 63 68 69 74 65 63 74 75 72 65 2e 54 6f 53  Architecture.ToS
12d70 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
12d80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12d90 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12dc0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
12dd0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12de0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12df0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12e00 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
12e10 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74  pon failure, ret
12e20 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72  urn an empty str
12e30 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  ing.  This will 
12e40 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20 20 20  prevent..       
12e50 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12e60 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68  the calling meth
12e70 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72  od from consider
12e80 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ing this method 
12e90 63 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20 20 20  call a..        
12ea0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
12eb0 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20  failure"...     
12ec0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12ed0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
12ee0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12ef0 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b   = String.Empty;
12f00 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
12f10 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
12f20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12f70 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f        return pro
12f80 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12f90 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  re;..      }....
12fa0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12ff0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13000 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13010 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73  Given the proces
13020 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
13030 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61  , returns the na
13040 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f  me of the platfo
13050 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  rm...      /// <
13060 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13070 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
13080 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  ="processorArchi
13090 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20  tecture">..     
130a0 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73   /// The process
130b0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
130c0 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64  to be translated
130d0 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e   to a platform n
130e0 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
130f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13100 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
13110 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61       /// The pla
13120 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74  tform name for t
13130 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f  he specified pro
13140 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
13150 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20  ure -OR- null.. 
13160 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63       /// if it c
13170 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
13180 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
13190 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
131a0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
131b0 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66   string GetPlatf
131c0 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ormName(..      
131d0 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
131e0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
131f0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
13200 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
13210 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
13220 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
13230 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
13250 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
13260 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f  re = GetProcesso
13270 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29 3b  rArchitecture();
13280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
13290 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
132a0 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72  rEmpty(processor
132b0 41 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a  Architecture))..
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
132d0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
132e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
132f0 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
13300 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13310 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
13320 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
13330 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20  urePlatforms == 
13340 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13350 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13360 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
13370 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
13380 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20  atformName;.... 
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
133a0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
133b0 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
133c0 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  TryGetValue(..  
133d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133e0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
133f0 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70  hitecture, out p
13400 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20  latformName)).. 
13410 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13430 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72    return platfor
13440 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  mName;..        
13450 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13460 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13470 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
13480 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13490 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
134a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
134e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
134f0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
13500 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
13510 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
13520 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74  brary based on t
13530 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
13540 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
13550 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20  y and processor 
13560 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20  architecture... 
13570 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13580 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
13590 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65  param name="base
135a0 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20  Directory">..   
135b0 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
135c0 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65  directory to use
135d0 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75  , null for defau
135e0 6c 74 20 28 74 68 65 20 62 61 73 65 20 64 69 72  lt (the base dir
135f0 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20  ectory of..     
13600 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74   /// the current
13610 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
13620 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65  ain).  This dire
13630 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e  ctory should con
13640 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
13650 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
13660 63 68 69 74 65 63 74 75 72 65 20 73 70 65 63 69  chitecture speci
13670 66 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72  fic sub-director
13680 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ies...      /// 
13690 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
136a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
136b0 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
136c0 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
136d0 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65  /// The requeste
136e0 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
136f0 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66  itecture, null f
13700 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d  or default (the.
13710 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
13720 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
13730 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
13740 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73   process).  This
13750 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a   caller should..
13760 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74        /// almost
13770 20 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 20   always specify 
13780 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61  null for this pa
13790 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20  rameter...      
137a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
137b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
137c0 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c  ame="nativeModul
137d0 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  eFileName">..   
137e0 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69     /// The candi
137f0 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75  date native modu
13800 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20  le file name to 
13810 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f  load will be sto
13820 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20  red here,..     
13830 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72   /// if necessar
13840 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
13850 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
13860 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
13870 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
13880 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
13890 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
138a0 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72   handle as retur
138b0 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61  ned by LoadLibra
138c0 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ry will be store
138d0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72  d..      /// her
138e0 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  e, if necessary.
138f0 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
13900 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f  l be IntPtr.Zero
13910 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d   if the call to.
13920 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c  .      /// LoadL
13930 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20  ibrary fails... 
13940 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
13950 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
13960 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
13970 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
13980 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
13990 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65  was loaded succe
139a0 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69  ssfully; otherwi
139b0 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a  se,..      /// z
139c0 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
139d0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
139e0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
139f0 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c   bool PreLoadSQL
13a00 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20  iteDll(..       
13a10 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44 69     string baseDi
13a20 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20  rectory,        
13a30 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
13a40 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
13a50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
13a60 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a  ture,    /* in *
13a70 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  /..          ref
13a80 20 73 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f   string nativeMo
13a90 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a  duleFileName, /*
13aa0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
13ab0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61     ref IntPtr na
13ac0 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
13ad0 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
13ae0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
13af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
13b00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
13b10 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
13b20 63 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65  cified base dire
13b30 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75  ctory is null, u
13b40 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a  se the default..
13b50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13b60 20 20 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74     (i.e. attempt
13b70 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   to automaticall
13b80 79 20 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20  y detect it)... 
13b90 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13ba0 20 20 20 20 20 20 20 69 66 20 28 62 61 73 65 44         if (baseD
13bb0 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
13bc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13bd0 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
13be0 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
13bf0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
13c00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13c10 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
13c20 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74  ailed to query t
13c30 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
13c40 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  y, stop now...  
13c50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13c60 20 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69        if (baseDi
13c70 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
13c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c90 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
13ca0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13cb0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
13cc0 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20  : Determine the 
13cd0 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  base file name f
13ce0 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
13cf0 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
13d00 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13d10 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74    If this is not
13d20 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63   known by this c
13d30 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20  lass, we cannot 
13d40 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20  continue...     
13d50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13d60 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
13d70 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69  meOnly = GetNati
13d80 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  veLibraryFileNam
13d90 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly();....    
13da0 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61        if (fileNa
13db0 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  meOnly == null).
13dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
13dd0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
13de0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13df0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13e00 20 49 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   If the native S
13e10 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 65 78  QLite library ex
13e20 69 73 74 73 20 69 6e 20 74 68 65 20 62 61 73 65  ists in the base
13e30 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   directory..    
13e40 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
13e50 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e  tself, stop now.
13e60 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
13e70 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13e80 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
13e90 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79  pDllFileName(May
13ea0 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61  beCombinePath(ba
13eb0 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  seDirectory,..  
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
13ed0 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
13ee0 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
13ef0 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
13f00 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
13f10 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
13f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
13f30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
13f40 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
13f50 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
13f60 61 72 63 68 69 74 65 63 74 75 72 65 20 69 73 20  architecture is 
13f70 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20  null, use the.. 
13f80 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13f90 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20    default...    
13fa0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13fb0 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
13fc0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
13fd0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13fe0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
13ff0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
14000 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
14010 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
14020 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14030 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
14040 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75   we failed to qu
14050 65 72 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ery the processo
14060 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
14070 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
14080 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14090 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
140a0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
140b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
140c0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
140d0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
140e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
140f0 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
14100 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66   full path and f
14110 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
14120 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
14130 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
14140 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67     library using
14150 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
14160 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65  rchitecture name
14170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
14180 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e  .          fileN
14190 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
141a0 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62  leName(MaybeComb
141b0 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d  inePath(MaybeCom
141c0 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
141d0 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
141e0 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f  ectory, processo
141f0 72 41 72 63 68 69 74 65 63 74 75 72 65 29 2c 20  rArchitecture), 
14200 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
14210 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
14220 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
14230 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
14240 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68  name based on th
14250 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
14260 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20  itecture name.. 
14270 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e           // is n
14280 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73  ot found, try us
14290 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74  ing the associat
142a0 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  ed platform name
142b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
142c0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
142d0 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
142e0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
142f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14300 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14310 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
14320 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61  tempt to transla
14330 74 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  te the processor
14340 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
14350 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
14360 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66    //       platf
14370 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
14380 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14390 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
143a0 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d  g platformName =
143b0 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
143c0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
143d0 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
143e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
143f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
14400 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
14410 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  d to translate t
14420 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
14430 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
14440 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14460 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d  (platformName ==
14470 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14480 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14490 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
144a0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
144b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
144c0 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75  TE: Build the fu
144d0 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65  ll path and file
144e0 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
144f0 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
14500 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
14510 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e      library usin
14520 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  g the platform n
14530 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
14540 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
14550 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
14560 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
14570 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
14580 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  th(MaybeCombineP
14590 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
145a0 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
145b0 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e  ctory, platformN
145c0 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e  ame), fileNameOn
145d0 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
145e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
145f0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
14600 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f  : If the file do
14610 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b  es not exist, sk
14620 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  ip trying to loa
14630 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  d it...         
14640 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14650 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
14660 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
14670 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
14680 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
14690 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
146a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72  ....          tr
146b0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
146c0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
146d0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
146e0 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
146f0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
14700 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14730 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
14740 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
14750 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
14760 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
14770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14780 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74    //       SQLit
14790 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d  e library from..
147a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
147b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
147c0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
147d0 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
147e0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
147f0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
14800 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
14810 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
14820 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
14830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
14840 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
14850 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79  re-loader is try
14860 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69  ing to load nati
14870 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ve " +..        
14880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53                "S
14890 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22  QLite library \"
148a0 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e  {0}\"...", fileN
148b0 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ame)); /* throw 
148c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
148d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
148e0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
148f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14900 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
14910 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
14920 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
14930 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
14940 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14950 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
14960 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64   Attempt to load
14970 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
14980 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  ary.  This will 
14990 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
149a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
149b0 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61  eturn a valid na
149c0 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
149d0 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74  le, return IntPt
149e0 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20  r.Zero,..       
149f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14a00 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65  or throw an exce
14a10 70 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73  ption.  This mus
14a20 74 20 75 73 65 20 74 68 65 20 61 70 70 72 6f 70  t use the approp
14a30 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20  riate..         
14a40 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f       //       P/
14a50 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f  Invoke method fo
14a60 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70  r the current op
14a70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d  erating system..
14a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14a90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14aa0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
14ab0 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65  eName = fileName
14ac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14ad0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
14ae0 64 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72  dle = NativeLibr
14af0 61 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69  aryHelper.LoadLi
14b00 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b  brary(fileName);
14b10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14b20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65    return (native
14b30 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20  ModuleHandle != 
14b40 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
14b50 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
14b60 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
14b70 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
14b80 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
14b90 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
14ba0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
14bb0 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
14bc0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
14bd0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
14be0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
14bf0 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
14c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
14c10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
14c20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14c30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14c40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
14c50 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62  OTE: First, grab
14c60 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20   the last Win32 
14c70 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20  error number... 
14c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c90 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
14ca0 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45         int lastE
14cb0 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47  rror = Marshal.G
14cc0 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72  etLastWin32Error
14cd0 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  (); /* throw */.
14ce0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14cf0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
14d10 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77  TE: Show where w
14d20 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  e failed to load
14d30 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
14d40 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
14d50 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
14d60 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e  ibrary from alon
14d70 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32  g with the Win32
14d80 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d   error code and.
14d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14da0 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65     //       exce
14db0 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  ption informatio
14dc0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
14dd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14de0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
14df0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
14e00 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
14e10 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
14e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
14e30 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
14e40 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
14e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e60 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
14e70 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69  y pre-loader fai
14e80 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69  led to load nati
14e90 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ve " +..        
14ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53                "S
14eb0 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22  QLite library \"
14ec0 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72  {0}\" (getLastEr
14ed0 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22  ror = {1}): {2}"
14ee0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14ef0 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
14f00 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29  e, lastError, e)
14f10 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
14f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
14f40 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
14f50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14f60 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
14f70 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
14f80 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
14f90 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
14fa0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
14fb0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
14fc0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
14fd0 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
14fe0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
14ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15030 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c  //////....#if PL
15040 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15050 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d  AMEWORK..    //.
15060 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e  .    // NOTE: On
15070 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
15080 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65  t Framework, the
15090 20 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20   native interop 
150a0 61 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20  assembly must.. 
150b0 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75     //       be u
150c0 73 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70  sed because it p
150d0 72 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20  rovides several 
150e0 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e  workarounds to .
150f0 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20  NET Compact..   
15100 20 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77   //       Framew
15110 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20  ork limitations 
15120 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72  important for pr
15130 6f 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f  oper operation o
15140 66 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20  f the core..    
15150 2f 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e  //       System.
15160 44 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63  Data.SQLite func
15170 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20  tionality (e.g. 
15180 62 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69  being able to bi
15190 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  nd..    //      
151a0 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20   parameters and 
151b0 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61  handle column va
151c0 6c 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e  lues of types In
151d0 74 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e  t64 and Double).
151e0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
151f0 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
15200 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
15210 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70   "SQLite.Interop
15220 2e 31 30 36 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69  .106.dll";..#eli
15230 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
15240 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  D..    //..    /
15250 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
15260 65 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61  e, if the standa
15270 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
15280 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73  y is enabled, us
15290 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  e it...    //.. 
152a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
152b0 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
152c0 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b  DLL = "sqlite3";
152d0 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45  ..#elif USE_INTE
152e0 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d  ROP_DLL..    //.
152f0 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74  .    // NOTE: Ot
15300 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20  herwise, if the 
15310 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e  native SQLite in
15320 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69  terop assembly i
15330 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20  s enabled,..    
15340 2f 2f 20 20 20 20 20 20 20 75 73 65 20 69 74 2e  //       use it.
15350 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
15360 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
15370 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
15380 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70   "SQLite.Interop
15390 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20  .dll";..#else.. 
153a0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
153b0 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73  TE: Finally, ass
153c0 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69 78  ume that the mix
153d0 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79  ed-mode assembly
153e0 20 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d   is being used..
153f0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
15400 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
15410 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
15420 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  "System.Data.SQL
15430 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69  ite.dll";..#endi
15440 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73  f....    // This
15450 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e   section uses in
15460 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74  terop calls that
15470 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74   also fetch text
15480 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d   length to optim
15490 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d  ize conversion..
154a0 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69  .    // When usi
154b0 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
154c0 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c  dll, we can repl
154d0 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20  ace these calls 
154e0 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69  with normal sqli
154f0 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20  te calls and..  
15500 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69    // do unoptimi
15510 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20  zed conversions 
15520 69 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72  instead afterwar
15530 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ds..    #region 
15540 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65  interop added te
15550 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a  xtlength calls..
15560 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
15570 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
15580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15590 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
155a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
155b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
155c0 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
155d0 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
155e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
155f0 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
15600 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15620 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15630 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15640 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
15650 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
15660 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
15670 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
15680 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
15690 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
156a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
156b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
156c0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
156d0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
156e0 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
156f0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15700 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
15710 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
15720 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15730 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
15740 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15750 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15760 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
15770 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70  decltype_interop
15780 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
15790 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
157a0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
157b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
157c0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
157d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
157e0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
157f0 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
15800 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
15810 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
15820 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
15830 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15840 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15850 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15860 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
15870 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
15880 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
15890 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
158a0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
158b0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
158c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
158d0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
158e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
158f0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
15900 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  olumn_name16_int
15910 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
15920 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
15930 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
15940 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15950 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
15960 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15970 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15980 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
15990 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  in_name_interop(
159a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
159b0 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
159c0 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
159d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
159e0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
159f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15a00 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
15a10 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
15a20 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
15a30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15a40 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
15a50 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15a60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15a70 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15a80 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15a90 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
15aa0 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69  umn_table_name_i
15ab0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
15ac0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
15ad0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
15ae0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15af0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15b00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15b10 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
15b20 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
15b30 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  ble_name16_inter
15b40 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
15b50 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
15b60 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
15b70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15b80 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15b90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15ba0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
15bb0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69  e3_column_text_i
15bc0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
15bd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
15be0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
15bf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15c00 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15c10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15c20 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
15c30 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
15c40 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  xt16_interop(Int
15c50 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15c60 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
15c70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15c80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15c90 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15ca0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15cb0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
15cc0 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  msg_interop(IntP
15cd0 74 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c  tr db, ref int l
15ce0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
15cf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15d00 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
15d10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15d20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15d30 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
15d40 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
15d50 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
15d60 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20  int nBytes, ref 
15d70 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66  IntPtr stmt, ref
15d80 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
15d90 6e 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61  n, ref int nRema
15da0 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  in);....    [Dll
15db0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15dc0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
15dd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15de0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15df0 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
15e00 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e  lumn_metadata_in
15e10 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
15e20 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
15e30 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
15e40 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
15e50 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61  ref IntPtr ptrDa
15e60 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50  taType, ref IntP
15e70 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72  tr ptrCollSeq, r
15e80 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20  ef int notNull, 
15e90 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b  ref int primaryK
15ea0 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f  ey, ref int auto
15eb0 49 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c  Inc, ref int dtL
15ec0 65 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65  en, ref int csLe
15ed0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
15ee0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15ef0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15f00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
15f10 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
15f20 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70  lue_text_interop
15f30 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
15f40 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
15f50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15f60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15f70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15f80 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
15f90 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f  e3_value_text16_
15fa0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
15fb0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
15fc0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15fd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15fe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15ff0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
16000 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69  qlite3_malloc_si
16010 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
16020 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  r p);....#if INT
16030 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44  EROP_LOG..    [D
16040 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16050 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
16060 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16070 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16080 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
16090 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d  _log_interop();.
160a0 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
160b0 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
160c0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
160d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
160e0 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
160f0 20 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75   add existing fu
16100 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74  nctionality on t
16110 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64  op of SQLite and
16120 20 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c   require a littl
16130 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20  e effort to..   
16140 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20   // get working 
16150 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  when using the s
16160 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c  tandard SQLite l
16170 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65  ibrary...    #re
16180 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64  gion interop add
16190 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ed functionality
161a0 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
161b0 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
161c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
161d0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
161e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
161f0 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
16200 6f 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  op_libversion();
16210 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
16220 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16230 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16240 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
16250 74 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63  tr interop_sourc
16260 65 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  eid();....    [D
16270 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16280 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
16290 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
162a0 6e 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f  n int interop_co
162b0 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
162c0 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65  (IntPtr zOptName
162d0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
162e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
162f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
16300 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
16310 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d  tPtr interop_com
16320 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
16330 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  nt N);....    [D
16340 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16350 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
16360 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16370 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16380 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  e sqlite3_close_
16390 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
163a0 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
163b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
163c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
163d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
163e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
163f0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
16400 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49  nction_interop(I
16410 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
16420 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
16430 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
16440 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
16450 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
16460 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
16470 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
16480 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
16490 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f  inal, int needCo
164a0 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b  llSeq);....    [
164b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
164c0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
164d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
164e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
164f0 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  de sqlite3_final
16500 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ize_interop(IntP
16510 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20  tr stmt);....   
16520 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16530 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
16540 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16550 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16560 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
16570 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72  kup_finish_inter
16580 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  op(IntPtr backup
16590 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
165a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
165b0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
165c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
165d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
165e0 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65  lite3_blob_close
165f0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
16600 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  blob);....    [D
16610 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16620 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
16630 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16640 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16650 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69  e sqlite3_open_i
16660 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74  nterop(byte[] ut
16670 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65  f8Filename, byte
16680 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69  [] vfsName, SQLi
16690 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
166a0 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75  flags, int extFu
166b0 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ncs, ref IntPtr 
166c0 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
166d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
166e0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
166f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16700 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16710 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69  sqlite3_open16_i
16720 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74  nterop(byte[] ut
16730 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65  f8Filename, byte
16740 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69  [] vfsName, SQLi
16750 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
16760 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75  flags, int extFu
16770 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ncs, ref IntPtr 
16780 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
16790 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
167a0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
167b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
167c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
167d0 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e  sqlite3_reset_in
167e0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
167f0 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  t);....    [DllI
16800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16810 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
16820 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
16830 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
16840 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  es_interop(IntPt
16850 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  r db);..#endif..
16860 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
16870 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
16880 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
16890 54 68 65 20 73 74 61 6e 64 61 72 64 20 61 70 69  The standard api
168a0 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74   call equivalent
168b0 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69  s of the above i
168c0 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20  nterop calls..  
168d0 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61    #region standa
168e0 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69  rd versions of i
168f0 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73  nterop functions
16900 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
16910 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21  TANDARD....#if !
16920 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16930 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16940 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16950 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16960 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16970 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16980 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16990 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
169a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
169b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
169c0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
169d0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
169e0 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  te3_close(IntPtr
169f0 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e   db);....#if !IN
16a00 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f  TEROP_LEGACY_CLO
16a10 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  SE..#if !PLATFOR
16a20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16a30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16a40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16a60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16a70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16a80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16a90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16aa0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16ab0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16ac0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16ad0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
16ae0 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29  se_v2(IntPtr db)
16af0 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d  ; /* 3.7.14+ */.
16b00 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
16b10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16b30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16b40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16b50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16b70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16b90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16ba0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16bb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16bc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
16bd0 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
16be0 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
16bf0 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
16c00 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54  nt nArgs, int nT
16c10 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
16c20 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  er, SQLiteCallba
16c30 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43  ck func, SQLiteC
16c40 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53  allback fstep, S
16c50 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61  QLiteFinalCallba
16c60 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23  ck ffinal);....#
16c70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16c80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16c90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16ca0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16cb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16cc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16cd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16ce0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16cf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16d00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16d10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16d20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16d30 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
16d40 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
16d50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16d60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16d70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16d80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16d90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16da0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16db0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16dc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16dd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16de0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16df0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16e00 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
16e10 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
16e20 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20  p_finish(IntPtr 
16e30 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  backup);....#if 
16e40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16e50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16e60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16e70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16e80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16e90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16ea0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16eb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16ec0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
16ed0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16ee0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
16ef0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
16f00 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74  ite3_reset(IntPt
16f10 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
16f20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16f30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16f40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16f50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16f60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16f70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16f80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16f90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16fa0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
16fb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16fc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
16fd0 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
16fe0 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28  _parameter_name(
16ff0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17000 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
17010 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17020 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17030 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17040 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17050 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17060 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17070 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17080 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17090 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
170a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
170b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
170c0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
170d0 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
170e0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
170f0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
17100 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17110 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17120 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17130 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17140 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17160 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17170 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17180 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17190 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
171a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
171b0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
171c0 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
171d0 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
171e0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
171f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17200 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17210 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17220 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17230 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17240 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17250 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17260 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17270 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17280 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17290 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
172a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
172b0 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28  column_decltype(
172c0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
172d0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
172e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
172f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17300 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17310 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17320 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17330 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17340 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17350 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17360 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17370 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17380 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17390 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
173a0 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e  mn_decltype16(In
173b0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
173c0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
173d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
173e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
173f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17400 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17410 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17420 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17430 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
17440 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17450 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
17460 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17470 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
17480 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
17490 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
174a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
174b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
174c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
174d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
174e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
174f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17500 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17510 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17520 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17530 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17540 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17550 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17560 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
17570 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28  3_column_name16(
17580 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17590 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
175a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
175b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
175c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
175d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
175e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
175f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17600 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17610 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17620 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17630 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17640 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17650 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
17660 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49  mn_origin_name(I
17670 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
17680 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
17690 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
176a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
176b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
176c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
176d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
176e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
176f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17700 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17710 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17720 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17730 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
17740 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
17750 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28  n_origin_name16(
17760 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17770 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
17780 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17790 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
177a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
177b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
177c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
177d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
177e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
177f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17800 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17810 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17820 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17830 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
17840 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e  mn_table_name(In
17850 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
17860 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
17870 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17880 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17890 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
178a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
178b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
178c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
178d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
178e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
178f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
17900 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17910 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
17920 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
17930 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e  _table_name16(In
17940 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
17950 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
17960 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17970 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17980 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17990 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
179a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
179b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
179c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
179d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
179e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
179f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17a00 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
17a10 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
17a20 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d  _text(IntPtr stm
17a30 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
17a40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17a50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17a60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17a70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17a80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17a90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17aa0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17ab0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17ac0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17ad0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17ae0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17af0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
17b00 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28  3_column_text16(
17b10 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17b20 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
17b30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17b40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17b50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17b60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17b70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17b80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17b90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17ba0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17bb0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17bc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17bd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17be0 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
17bf0 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  sg(IntPtr db);..
17c00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17c10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17c20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17c30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17c40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17c50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17c60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17c70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17c90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17ca0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17cb0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17cc0 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  de sqlite3_prepa
17cd0 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  re(IntPtr db, In
17ce0 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
17cf0 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
17d00 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
17d10 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
17d20 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50 41 52  ..#if USE_PREPAR
17d30 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46  E_V2..#if !PLATF
17d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17d70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17d80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17d90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17da0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17db0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17dc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17de0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17df0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70  orCode sqlite3_p
17e00 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72  repare_v2(IntPtr
17e10 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c   db, IntPtr pSql
17e20 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65  , int nBytes, re
17e30 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72  f IntPtr stmt, r
17e40 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d  ef IntPtr ptrRem
17e50 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ain);..#endif...
17e60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17e70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17e80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17e90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17ea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17eb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17ec0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17ed0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17ee0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17ef0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17f00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17f10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
17f20 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  e sqlite3_table_
17f30 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28  column_metadata(
17f40 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
17f50 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  ] dbName, byte[]
17f60 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d   tblName, byte[]
17f70 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e   colName, ref In
17f80 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65  tPtr ptrDataType
17f90 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
17fa0 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74  CollSeq, ref int
17fb0 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e   notNull, ref in
17fc0 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65  t primaryKey, re
17fd0 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d  f int autoInc);.
17fe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
180a0 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e  e3_value_text(In
180b0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
180c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
180d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
180e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
180f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18100 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18110 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18120 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18130 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18140 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18150 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18160 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18170 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
18180 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  e_text16(IntPtr 
18190 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20  p);....#endif.. 
181a0 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41     // SQLITE_STA
181b0 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
181c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
181d0 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  / These function
181e0 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64  s are custom and
181f0 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c   have no equival
18200 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62  ent standard lib
18210 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  rary method...  
18220 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d    // All of them
18230 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61   are "nice to ha
18240 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63  ves" and not nec
18250 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74  essarily "need t
18260 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23  o haves"...    #
18270 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61  region no equiva
18280 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65  lent standard me
18290 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  thod....#if !SQL
182a0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
182b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
182c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
182d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
182e0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
182f0 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
18300 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49  ollseq_interop(I
18310 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
18320 65 66 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66  ef int type, ref
18330 20 69 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e   int enc, ref in
18340 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
18350 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18360 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18370 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18380 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
18390 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61  ontext_collcompa
183a0 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  re_interop(IntPt
183b0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
183c0 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c  ] p1, int p1len,
183d0 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20   byte[] p2, int 
183e0 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  p2len);....    [
183f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18400 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18410 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18420 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
18430 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f  de sqlite3_curso
18440 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  r_rowid_interop(
18450 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
18460 20 63 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e   cursor, ref lon
18470 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20  g rowid);....   
18480 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18490 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
184a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
184b0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
184c0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  Code sqlite3_ind
184d0 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69  ex_column_info_i
184e0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
184f0 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67  , byte[] catalog
18500 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61  , byte[] IndexNa
18510 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d  me, byte[] Colum
18520 6e 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73  nName, ref int s
18530 6f 72 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e  ortOrder, ref in
18540 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49  t onError, ref I
18550 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c  ntPtr Collation,
18560 20 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e   ref int colllen
18570 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18580 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18590 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
185a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
185b0 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  t sqlite3_table_
185c0 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49  cursor_interop(I
185d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
185e0 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f  db, int tableRoo
185f0 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69  tPage);....#endi
18600 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
18610 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
18620 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18630 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
18640 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
18650 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
18660 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
18670 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
18680 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  rop calls..    /
18690 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68  / scattered in h
186a0 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72  ere, but they ar
186b0 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68  e only active wh
186c0 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  en PLATFORM_COMP
186d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20  ACTFRAMEWORK is 
186e0 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23  declared...    #
186f0 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
18700 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
18710 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18720 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18730 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18740 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18760 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18770 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18780 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18790 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
187a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
187b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
187c0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
187d0 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
187e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
187f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18800 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18820 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18830 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18840 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18850 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18860 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18870 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18880 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18890 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
188a0 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
188b0 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ber();....#if !P
188c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
188d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
188e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
188f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18900 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18910 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18920 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18930 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18940 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18950 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18960 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18970 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65  r sqlite3_source
18980 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  id();....#if !PL
18990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
189a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
189b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
189c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
189d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
189e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
189f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18a00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18a10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18a30 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
18a40 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
18a50 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
18a60 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  zOptName);....#i
18a70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18a80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18a90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18aa0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18ab0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18ac0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18ad0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18ae0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18af0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18b00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18b10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
18b20 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
18b30 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
18b40 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int N);....#if !
18b50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18b60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18b80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18b90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18bb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18bc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18bd0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18be0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18bf0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18c00 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18c10 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65  te3_enable_share
18c20 64 5f 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20  d_cache(..      
18c30 20 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a    int enable);..
18c40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18c50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18c60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18c70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18c80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18c90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18ca0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18cb0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18cc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18cd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
18ce0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18cf0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
18d00 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  de sqlite3_enabl
18d10 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
18d20 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
18d30 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65  r db, int enable
18d40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18d50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18d60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18d70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18d80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18d90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18da0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18db0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18dc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18dd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18de0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18df0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18e00 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c  orCode sqlite3_l
18e10 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
18e20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
18e30 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61  b, byte[] fileNa
18e40 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e  me, byte[] procN
18e50 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
18e60 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  pError);....#if 
18e70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18e80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18e90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18ea0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18eb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18ec0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18ed0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18ee0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ef0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18f00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18f10 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18f20 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18f30 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75  ite3_overload_fu
18f40 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  nction(IntPtr db
18f50 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20  , IntPtr zName, 
18f60 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23  int nArgs);....#
18f70 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20  if WINDOWS..#if 
18f80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18f90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18fa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18fb0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18fc0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18fd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18fe0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
18ff0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
19000 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19020 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
19030 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
19040 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a  #endif..    //..
19050 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
19060 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f   "sqlite3_win32_
19070 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53  set_directory" S
19080 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
19090 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
190a0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
190b0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
190c0 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d  indows...    //.
190d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
190e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
190f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
19100 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69  te3_win32_set_di
19110 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70  rectory(uint typ
19120 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29  e, string value)
19130 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20  ;....#if !DEBUG 
19140 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20  // NOTE: Should 
19150 62 65 20 22 57 49 4e 33 32 48 45 41 50 20 26 26  be "WIN32HEAP &&
19160 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66   !MEMDEBUG"..#if
19170 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19180 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19190 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
191a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
191b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
191c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
191d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
191e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
191f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19200 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
19210 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
19220 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74  ite3_win32_reset
19230 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f  _heap" SQLite co
19240 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
19250 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
19260 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
19270 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77  ted on Windows w
19280 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61  hen the Win32 na
19290 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69  tive allocator i
192a0 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20  s in..    //    
192b0 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20     use (i.e. by 
192c0 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c  default, in "Rel
192d0 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20  ease" builds of 
192e0 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
192f0 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  te..    //      
19300 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61   only).  By defa
19310 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20  ult, in "Debug" 
19320 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
19330 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68  .Data.SQLite, th
19340 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
19350 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74  MEMDEBUG allocat
19360 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20  or is used...   
19370 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
19380 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19390 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
193a0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65  sqlite3_win32_re
193b0 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23  set_heap();....#
193c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
193d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
193e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
193f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19420 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19430 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19440 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19450 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
19460 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
19470 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
19480 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74  pact_heap" SQLit
19490 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
194a0 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
194b0 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
194c0 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
194d0 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
194e0 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
194f0 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
19500 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
19510 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
19520 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
19530 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
19540 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
19550 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
19560 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
19570 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
19580 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
19590 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
195a0 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
195b0 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
195c0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
195d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
195e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
195f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
19600 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72  2_compact_heap(r
19610 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29  ef uint largest)
19620 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  ;..#endif..#endi
19630 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
19640 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19650 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19660 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19670 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19680 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
196a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
196b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
196c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
196d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
196e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
196f0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20  ite3_malloc(int 
19700 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
19710 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19720 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19730 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19740 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19750 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19760 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19770 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19780 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19790 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
197a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
197b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
197c0 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49  qlite3_realloc(I
197d0 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b  ntPtr p, int n);
197e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
197f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19800 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19820 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19830 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19840 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19850 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19870 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19880 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19890 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
198a0 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20 70 29  3_free(IntPtr p)
198b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
198c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
198d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
198e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
198f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19900 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19910 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19920 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19930 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19940 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19950 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19960 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19970 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
19980 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66  en_v2(byte[] utf
19990 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49  8Filename, ref I
199a0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
199b0 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
199c0 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ags, byte[] vfsN
199d0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
199e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
199f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19a00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19a10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19a20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19a30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
19a40 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
19a50 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
19a60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
19a70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19a80 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
19a90 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
19aa0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19ab0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19ac0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19ad0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73  sqlite3_open16(s
19ae0 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20  tring fileName, 
19af0 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
19b00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19b10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19b20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19b30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19b40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19b50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19b60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19b70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19b80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19b90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19ba0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19bb0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
19bc0 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74  _interrupt(IntPt
19bd0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
19be0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19bf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19c00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19c10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19c20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19c30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19c40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19c50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
19c60 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  ong sqlite3_last
19c70 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e  _insert_rowid(In
19c80 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69  tPtr db);..#endi
19c90 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
19ca0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19cb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19cc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19cd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19ce0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19cf0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19d00 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19d10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19d20 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19d30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19d40 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
19d50 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72  3_changes(IntPtr
19d60 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
19d70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19d80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19d90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19da0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
19db0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19dc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19dd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19de0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
19df0 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
19e00 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69  y_used();..#endi
19e10 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
19e20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19e30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19e40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19e50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19e60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19e70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
19e80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19e90 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
19ea0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
19eb0 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65  ghwater(int rese
19ec0 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d  tFlag);..#endif.
19ed0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19ee0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19ef0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19f00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19f10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19f20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19f30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19f40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19f50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19f60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19f70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19f80 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19f90 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74  ode sqlite3_shut
19fa0 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  down();....#if !
19fb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19fc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19fe0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
19ff0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a000 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a010 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a020 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a030 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a040 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a050 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a060 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a070 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74  te3_busy_timeout
1a080 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
1a090 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ms);....#if !PLA
1a0a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a0b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1a0c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a0d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1a0e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1a0f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a100 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1a110 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a120 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1a130 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a140 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1a150 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1a160 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28  _clear_bindings(
1a170 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1a180 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a190 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a1a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a1b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a1c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a1d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a1e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a1f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a200 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a210 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a220 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a230 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1a240 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62  e sqlite3_bind_b
1a250 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  lob(IntPtr stmt,
1a260 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65   int index, Byte
1a270 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53  [] value, int nS
1a280 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61  ize, IntPtr nTra
1a290 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20  nsient);....#if 
1a2a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a2b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a2c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a2d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a2e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a2f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a300 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1a310 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a320 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a330 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
1a340 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74  uble(IntPtr stmt
1a350 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75  , int index, dou
1a360 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ble value);..#en
1a370 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1a380 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a390 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a3a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a3b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a3c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a3d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a3e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1a3f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a400 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a410 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a420 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1a430 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1a440 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20  bind_int(IntPtr 
1a450 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1a460 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a   int value);....
1a470 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
1a480 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
1a490 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
1a4a0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20  ite3_bind_int"; 
1a4b0 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
1a4c0 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
1a4d0 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
1a4e0 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
1a4f0 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74  unsigned (32-bit
1a500 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20  ) integer...    
1a510 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  //..#if !PLATFOR
1a520 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a530 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1a550 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1a560 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20  ite3_bind_int", 
1a570 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a580 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a590 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a5a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a5b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a5c0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1a5d0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
1a5e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a5f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a600 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1a610 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1a620 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20  ind_uint(IntPtr 
1a630 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1a640 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d   uint value);...
1a650 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a660 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a670 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a680 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a690 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a6a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a6b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
1a6c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a6d0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1a6e0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
1a6f0 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  nd_int64(IntPtr 
1a700 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1a710 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
1a720 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  endif....    //.
1a730 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
1a740 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
1a750 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
1a760 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76  nd_int64"; howev
1a770 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a  er, it has the..
1a780 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72      //       cor
1a790 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74  rect type signat
1a7a0 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67  ure for an unsig
1a7b0 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74  ned long (64-bit
1a7c0 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20  ) integer...    
1a7d0 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  //..#if !PLATFOR
1a7e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a7f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a800 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1a810 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1a820 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22  ite3_bind_int64"
1a830 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a840 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a850 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a860 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a870 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a880 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a890 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28  te3_bind_uint64(
1a8a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1a8b0 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61   index, ulong va
1a8c0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
1a8d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a8e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a8f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a900 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a920 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a930 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a960 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a970 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a980 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1a990 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e  e sqlite3_bind_n
1a9a0 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ull(IntPtr stmt,
1a9b0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1a9c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a9d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a9e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a9f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1aa00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1aa10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1aa20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1aa30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1aa40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1aa50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1aa60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1aa70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1aa80 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
1aa90 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  xt(IntPtr stmt, 
1aaa0 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b  int index, byte[
1aab0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65  ] value, int nle
1aac0 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
1aad0 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
1aae0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1aaf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ab00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ab10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ab20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ab30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ab40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ab50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ab60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ab70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ab80 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1ab90 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
1aba0 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50  meter_count(IntP
1abb0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
1abc0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1abd0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1abe0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1abf0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ac00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ac10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ac20 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ac30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ac40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ac50 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ac60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1ac70 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  t sqlite3_bind_p
1ac80 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49  arameter_index(I
1ac90 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65  ntPtr stmt, byte
1aca0 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a  [] strName);....
1acb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1acc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1acd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ace0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1acf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ad00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ad10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ad20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ad30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ad40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ad50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ad60 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
1ad70 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  umn_count(IntPtr
1ad80 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1ad90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ada0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1adb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1adc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1add0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ade0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1adf0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ae00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ae10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ae20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ae30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1ae40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1ae50 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20  te3_step(IntPtr 
1ae60 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1ae70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ae80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ae90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1aea0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1aeb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1aec0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1aed0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1aee0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1aef0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1af00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1af10 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1af20 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
1af30 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74  only(IntPtr stmt
1af40 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d  ); /* 3.7.4+ */.
1af50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1af60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1af70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1af80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1af90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1afa0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1afb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1afc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1afd0 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73   extern double s
1afe0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
1aff0 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74  uble(IntPtr stmt
1b000 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
1b010 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1b020 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b030 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b050 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b060 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b070 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b080 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b0a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b0b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b0c0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1b0d0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
1b0e0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1b0f0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1b100 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b110 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b120 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b130 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1b140 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b160 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1b170 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b180 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63  n long sqlite3_c
1b190 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50  olumn_int64(IntP
1b1a0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1b1b0 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ex);..#endif....
1b1c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b1d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b1e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b1f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b200 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b210 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b220 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b230 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b240 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b250 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b260 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b270 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1b280 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50  column_blob(IntP
1b290 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1b2a0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1b2b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b2c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1b2d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b2e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1b2f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1b300 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b310 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1b320 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b330 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1b340 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1b350 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1b360 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
1b370 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  s(IntPtr stmt, i
1b380 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1b390 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b3a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b3b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b3c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b3d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b3e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b3f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b400 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b410 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b420 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b430 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1b440 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
1b450 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  n_bytes16(IntPtr
1b460 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1b470 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b480 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b490 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b4a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b4b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b4c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b4d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b4e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b4f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b500 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b510 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b520 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
1b530 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ity sqlite3_colu
1b540 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73  mn_type(IntPtr s
1b550 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1b560 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b580 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b5a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b5b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b5c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b5d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b5e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b5f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b600 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b610 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1b620 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
1b630 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e  ate_collation(In
1b640 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1b650 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79  strName, int nTy
1b660 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1b670 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69  r, SQLiteCollati
1b680 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66  on func);....#if
1b690 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b6a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b6b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b6c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1b6d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b6e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b6f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1b700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b710 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1b720 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1b730 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1b740 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  t sqlite3_aggreg
1b750 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ate_count(IntPtr
1b760 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
1b770 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b780 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b790 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b7a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b7b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b7c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b7d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b7e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b7f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b800 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b810 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1b820 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
1b830 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  lue_blob(IntPtr 
1b840 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1b850 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b860 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b870 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b880 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b890 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b8a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b8b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b8c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b8d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b8e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b8f0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b900 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
1b910 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
1b920 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b930 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b940 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b950 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b960 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b970 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b980 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b990 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b9a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b9b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b9c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1b9d0 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
1b9e0 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20  _bytes16(IntPtr 
1b9f0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1ba00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ba10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ba20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ba30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ba40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ba50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ba60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ba70 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
1ba80 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  le sqlite3_value
1ba90 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70  _double(IntPtr p
1baa0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
1bab0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1bac0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bad0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bae0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1baf0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1bb00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1bb10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1bb20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bb30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1bb40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1bb50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1bb60 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
1bb70 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d  _int(IntPtr p);.
1bb80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1bb90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1bba0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1bbb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1bbc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1bbd0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1bbe0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1bbf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bc00 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
1bc10 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
1bc20 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
1bc30 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1bc40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bc50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bc60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bc70 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bc80 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bc90 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bca0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bcb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bcc0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bcd0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bce0 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
1bcf0 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c  nity sqlite3_val
1bd00 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70  ue_type(IntPtr p
1bd10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1bd20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1bd30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1bd40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1bd50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bd60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1bd70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1bd80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1bd90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bda0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bdb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bdc0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1bdd0 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28  te3_result_blob(
1bde0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1bdf0 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
1be00 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
1be10 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1be20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1be30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1be40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1be50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1be60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1be70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1be80 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1be90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1bea0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1beb0 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28  3_result_double(
1bec0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1bed0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
1bee0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1bef0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bf00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bf10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bf20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bf30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bf40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bf50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1bf60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bf70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1bf80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1bf90 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1bfa0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1bfb0 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74  rror(IntPtr cont
1bfc0 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45  ext, byte[] strE
1bfd0 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  rr, int nLen);..
1bfe0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bff0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c000 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c010 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c020 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c030 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c040 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c050 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c070 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c080 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c090 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1c0a0 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64  result_error_cod
1c0b0 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
1c0c0 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  , SQLiteErrorCod
1c0d0 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  e value);....#if
1c0e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c0f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c100 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c110 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c120 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c130 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c140 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c150 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c160 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c170 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c180 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1c190 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1c1a0 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49  t_error_toobig(I
1c1b0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
1c1c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c1d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c1e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c1f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c200 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c210 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c220 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c230 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c250 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c260 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c270 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1c280 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f  _result_error_no
1c290 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  mem(IntPtr conte
1c2a0 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
1c2b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c2c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c2d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c2e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c2f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c300 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c310 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c320 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c330 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c340 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c350 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1c360 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c  lite3_result_val
1c370 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ue(IntPtr contex
1c380 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29  t, IntPtr value)
1c390 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c3a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c3b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c3c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c3d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c3e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c3f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c400 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c410 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c420 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c430 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c440 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1c450 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c  e3_result_zerobl
1c460 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
1c470 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  t, int nLen);...
1c480 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c490 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c4a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c4b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c4c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c4d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c4e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c4f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c500 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c510 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c520 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c530 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1c540 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72  esult_int(IntPtr
1c550 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61   context, int va
1c560 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
1c570 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c580 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c590 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c5a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c5b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c5c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c5d0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c5e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1c5f0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1c600 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63  t_int64(IntPtr c
1c610 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c  ontext, long val
1c620 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
1c630 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c640 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c650 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c660 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c670 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c680 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c690 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c6a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c6b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c6c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c6d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c6e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1c6f0 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  sult_null(IntPtr
1c700 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
1c710 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c720 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c730 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c740 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c750 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c770 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c790 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1c7a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c7b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1c7c0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1c7d0 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63  lt_text(IntPtr c
1c7e0 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
1c7f0 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  alue, int nLen, 
1c800 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
1c810 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
1c820 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c830 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c840 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c850 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c860 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c870 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c880 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c8a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c8b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c8c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c8d0 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
1c8e0 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20  _context(IntPtr 
1c8f0 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79  context, int nBy
1c900 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tes);....#if !PL
1c910 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c920 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c930 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c940 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c950 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c960 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
1c970 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
1c980 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
1c990 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c9a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c9b0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
1c9c0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
1c9d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c9e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c9f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ca00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
1ca10 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
1ca20 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69   int index, stri
1ca30 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c  ng value, int nl
1ca40 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
1ca50 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
1ca60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ca70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ca80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ca90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1caa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1cab0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1cac0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1cad0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1cae0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1caf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cb00 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1cb10 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1cb20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1cb30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cb40 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1cb50 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e  esult_error16(In
1cb60 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
1cb70 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e  ring strName, in
1cb80 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
1cb90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cba0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cbb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cbc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1cbd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1cbe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1cbf0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
1cc00 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
1cc10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1cc20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cc30 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
1cc40 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1cc50 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1cc60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cc70 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1cc80 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e  result_text16(In
1cc90 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
1cca0 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e  ring strName, in
1ccb0 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nLen, IntPtr p
1ccc0 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
1ccd0 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43  if INTEROP_CODEC
1cce0 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c   || INTEROP_INCL
1ccf0 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c  UDE_SEE..#if !PL
1cd00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1cd10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1cd20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cd30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1cd40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cd50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cd60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1cd70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cd80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1cd90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cda0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1cdb0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1cdc0 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c  3_key(IntPtr db,
1cdd0 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74   byte[] key, int
1cde0 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66   keylen);....#if
1cdf0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ce00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ce10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ce20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ce30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ce40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ce50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ce60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ce70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ce80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ce90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cea0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1ceb0 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50  lite3_rekey(IntP
1cec0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65  tr db, byte[] ke
1ced0 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d  y, int keylen);.
1cee0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49  .#endif....#if I
1cef0 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a  NTEROP_INCLUDE_Z
1cf00 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54  IPVFS..#if !PLAT
1cf10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1cf20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1cf30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cf40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1cf50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1cf60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1cf70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1cf80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cf90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1cfa0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1cfb0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70   extern void zip
1cfc0 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d  vfsInit_v2();...
1cfd0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cfe0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cff0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d000 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d010 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d020 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d030 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d040 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d050 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d060 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d070 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d080 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69  n void zipvfsIni
1d090 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74  t_v3(int regDflt
1d0a0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
1d0b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d0c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d0d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d0e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d0f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d110 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d120 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d130 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d140 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d150 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1d160 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67  oid sqlite3_prog
1d170 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74  ress_handler(Int
1d180 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c  Ptr db, int ops,
1d190 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43   SQLiteProgressC
1d1a0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
1d1b0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
1d1c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d1d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d1e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d1f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d200 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d210 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d220 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d230 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d240 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d250 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d260 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d270 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1d280 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
1d290 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
1d2a0 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62  eAuthorizerCallb
1d2b0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
1d2c0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
1d2d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d2e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d2f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d300 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d310 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d320 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d330 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d350 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d360 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d370 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1d380 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64  tPtr sqlite3_upd
1d390 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  ate_hook(IntPtr 
1d3a0 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65  db, SQLiteUpdate
1d3b0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
1d3c0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
1d3d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d3e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d3f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d400 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d410 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d420 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d430 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d440 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d450 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d460 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d470 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d480 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1d490 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e  3_commit_hook(In
1d4a0 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43  tPtr db, SQLiteC
1d4b0 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75  ommitCallback fu
1d4c0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
1d4d0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
1d4e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d4f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d500 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d510 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d520 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d530 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d540 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d550 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d560 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d570 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d580 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d590 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74  qlite3_trace(Int
1d5a0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72  Ptr db, SQLiteTr
1d5b0 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  aceCallback func
1d5c0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
1d5d0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  ;....    // Sinc
1d5e0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
1d5f0 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61  () takes a varia
1d600 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73  ble argument lis
1d610 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76  t, we have to ov
1d620 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69  erload declarati
1d630 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20  ons..    // for 
1d640 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c  all possible cal
1d650 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e 74 20  ls that we want 
1d660 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c  to use...#if !PL
1d670 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d680 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d690 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d6a0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1d6b0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
1d6c0 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1d6d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d6e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d6f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d700 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d710 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1d720 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
1d730 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
1d740 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d750 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d760 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d770 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69  config_none(SQLi
1d780 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1d790 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  op);....#if !PLA
1d7a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d7b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d7c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d7d0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
1d7e0 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
1d7f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d800 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d810 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d820 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d830 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d840 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
1d850 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
1d860 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d870 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d880 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1d890 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1d8a0 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69 74 65  onfig_int(SQLite
1d8b0 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
1d8c0 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
1d8d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d8e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d8f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d900 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1d910 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1d920 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1d930 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d940 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d950 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d960 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d970 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1d980 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1d990 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1d9a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d9b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d9c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d9d0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
1d9e0 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  og(SQLiteConfigO
1d9f0 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74  psEnum op, SQLit
1da00 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e  eLogCallback fun
1da10 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
1da20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1da30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1da40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1da50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1da60 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
1da70 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
1da80 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1da90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1daa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1dab0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1dac0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1dad0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1dae0 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
1daf0 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
1db00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1db10 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1db20 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1db30 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74  e3_db_config_int
1db40 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64  _refint(IntPtr d
1db50 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44  b, SQLiteConfigD
1db60 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  bOpsEnum op, int
1db70 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20   value, ref int 
1db80 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20  result);....#if 
1db90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1dba0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1dbb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dbc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1dbd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1dbe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1dbf0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1dc00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1dc10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1dc20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1dc30 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1dc40 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
1dc50 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
1dc60 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
1dc70 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
1dc80 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
1dc90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1dca0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dcb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1dcc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dcd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1dce0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1dcf0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1dd00 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1dd10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dd20 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dd30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dd40 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1dd50 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
1dd60 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1dd70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dd80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dd90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dda0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ddb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ddc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ddd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1dde0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ddf0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1de00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1de10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1de20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1de30 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
1de40 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
1de50 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
1de60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1de70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1de80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1de90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1dea0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1deb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dec0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ded0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dee0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1def0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1df00 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1df10 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
1df20 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
1df30 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
1df40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1df50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1df60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1df70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1df80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1df90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dfa0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dfb0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dfc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dfd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dfe0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dff0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1e000 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  _db_readonly(Int
1e010 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
1e020 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
1e030 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e040 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e050 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e060 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
1e070 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
1e080 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
1e090 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e0a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e0b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e0c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e0d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
1e0e0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
1e0f0 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
1e100 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e110 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e120 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1e130 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
1e140 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
1e150 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
1e160 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e170 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e180 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e190 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e1a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e1b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e1c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e1d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e1e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e1f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e200 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e210 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1e220 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
1e230 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
1e240 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1e250 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e260 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e270 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e280 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e290 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e2a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e2b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e2c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e2d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e2e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e2f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1e300 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1e310 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
1e320 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
1e330 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
1e340 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
1e350 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
1e360 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
1e370 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e380 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e390 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e3a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e3b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e3c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e3d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e3e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e3f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e400 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e410 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1e420 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
1e430 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
1e440 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
1e450 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e460 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e470 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e480 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e490 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e4a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e4b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e4c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e4d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e4e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e4f0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1e500 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
1e510 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
1e520 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e530 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e540 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e550 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e570 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e580 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e590 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e5b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e5c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e5d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1e5e0 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
1e5f0 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
1e600 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
1e610 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
1e620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e640 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e650 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e660 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e670 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e680 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e6a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e6b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e6c0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1e6d0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1e6e0 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
1e6f0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1e700 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e710 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e720 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e730 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e740 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e750 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e760 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e770 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e780 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e790 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e7a0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1e7b0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1e7c0 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
1e7d0 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
1e7e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e7f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e800 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e820 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e830 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e840 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e850 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e870 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e880 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e890 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e8a0 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
1e8b0 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
1e8c0 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
1e8d0 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
1e8e0 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
1e8f0 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
1e900 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
1e910 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
1e920 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
1e930 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
1e940 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
1e950 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
1e960 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
1e970 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
1e980 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
1e990 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
1e9a0 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
1e9b0 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
1e9c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e9d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e9e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e9f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ea00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ea10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ea20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1ea30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ea40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1ea50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ea60 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1ea70 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
1ea80 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
1ea90 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
1eaa0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1eab0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1eac0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ead0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1eae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1eaf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1eb00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1eb10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1eb20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1eb30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1eb40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1eb50 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1eb60 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
1eb70 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
1eb80 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
1eb90 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
1eba0 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
1ebb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ebc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ebd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ebe0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ebf0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ec00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ec10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ec20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ec30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ec40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1ec50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ec60 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
1ec70 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
1ec80 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
1ec90 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
1eca0 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
1ecb0 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
1ecc0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ecd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ece0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ecf0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1ed00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ed10 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ed20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ed30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1ed40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ed50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1ed60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ed70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1ed80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
1ed90 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
1eda0 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
1edb0 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
1edc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1edd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ede0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1edf0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1ee00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1ee10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ee20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1ee30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ee40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ee50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ee60 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1ee70 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
1ee80 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
1ee90 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
1eea0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1eeb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1eec0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1eed0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1eee0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1eef0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ef00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ef10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ef20 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ef30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ef40 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1ef50 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
1ef60 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
1ef70 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
1ef80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ef90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1efa0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1efb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1efc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1efd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1efe0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1eff0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f000 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f010 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f020 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f030 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f040 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e  e3_blob_close(In
1f050 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
1f060 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f070 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f080 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f090 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f0a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f0b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f0c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f0d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f0e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f0f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f100 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f110 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  int sqlite3_blob
1f120 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c  _bytes(IntPtr bl
1f130 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
1f140 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f150 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1f160 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f170 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1f180 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1f190 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f1a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f1b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f1c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1f1d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f1e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1f1f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1f200 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74  _blob_open(IntPt
1f210 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
1f220 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
1f230 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
1f240 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c  ame, long rowId,
1f250 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20   int flags, ref 
1f260 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b  IntPtr ptrBlob);
1f270 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f280 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f290 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f2a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f2b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f2c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f2d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f2e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f2f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f300 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f310 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f320 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1f330 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
1f340 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c  b_read(IntPtr bl
1f350 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
1f360 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
1f370 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
1f380 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
1f390 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
1f3a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f3b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f3c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f3d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f3e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f3f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f400 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f410 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f420 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f430 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f440 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f450 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f460 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
1f470 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f  eopen(IntPtr blo
1f480 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  b, long rowId);.
1f490 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f4a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f4b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f4c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f4d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f4e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f4f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f500 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f510 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f520 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f530 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f540 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1f550 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
1f560 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c  _write(IntPtr bl
1f570 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
1f580 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
1f590 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
1f5a0 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
1f5b0 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
1f5c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f5d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f5e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f5f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f600 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f610 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f620 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f630 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f640 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f650 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f660 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f670 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f680 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
1f690 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
1f6a0 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
1f6b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f6c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f6d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f6e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f6f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f700 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f710 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f720 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f730 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f740 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f750 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f760 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1f770 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
1f780 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
1f790 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
1f7a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
1f7b0 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73  SQLite API calls
1f7c0 20 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64   that are provid
1f7d0 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77  ed by "well-know
1f7e0 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68  n" extensions th
1f7f0 61 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63  at may be static
1f800 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e  ally..    // lin
1f810 6b 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c  ked with the SQL
1f820 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20  ite core native 
1f830 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c  library currentl
1f840 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23  y in use...    #
1f850 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e  region extension
1f860 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c   sqlite api call
1f870 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 76  s..    #region v
1f880 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 23 69  irtual table..#i
1f890 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
1f8a0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
1f8b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f8c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f8d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f8e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f8f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f900 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f910 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f920 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f930 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f940 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f950 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1f960 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
1f970 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
1f980 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1f990 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71  Ptr name, ref sq
1f9a0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
1f9b0 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  ule, IntPtr pCli
1f9c0 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f  entData, xDestro
1f9d0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
1f9e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f9f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fa00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1fa10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1fa20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1fa30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1fa40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1fa50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1fa60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fa70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1fa80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fa90 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1faa0 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75  te3_dispose_modu
1fab0 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  le(IntPtr pModul
1fac0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
1fad0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1fae0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1faf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a  //////////////..
1fb30 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 65  ..    #region se
1fb40 73 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 0d  ssion extension.
1fb50 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 53 45 53  .#if INTEROP_SES
1fb60 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e 0d 0a  SION_EXTENSION..
1fb70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fb80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fb90 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1fba0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1fbb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fbc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1fbd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65  .    internal de
1fbe0 6c 65 67 61 74 65 20 69 6e 74 20 78 53 65 73 73  legate int xSess
1fbf0 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74 50 74 72  ionFilter(IntPtr
1fc00 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1fc10 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   tblName);....#i
1fc20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1fc30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fc40 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1fc50 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1fc60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1fc70 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1fc80 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
1fc90 67 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67  gate SQLiteChang
1fca0 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65 73 75  eSetConflictResu
1fcb0 6c 74 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c  lt xSessionConfl
1fcc0 69 63 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ict(IntPtr conte
1fcd0 78 74 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  xt, SQLiteChange
1fce0 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 20  SetConflictType 
1fcf0 74 79 70 65 2c 20 49 6e 74 50 74 72 20 69 74 65  type, IntPtr ite
1fd00 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  rator);....#if !
1fd10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fd20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fd30 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1fd40 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1fd50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1fd60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1fd70 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
1fd80 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1fd90 65 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 28  e xSessionInput(
1fda0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
1fdb0 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 72 65  IntPtr pData, re
1fdc0 66 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d  f int nData);...
1fdd0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1fde0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fdf0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1fe00 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1fe10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fe20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1fe30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64  ..    internal d
1fe40 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1fe50 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e  rorCode xSession
1fe60 4f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63 6f  Output(IntPtr co
1fe70 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44  ntext, IntPtr pD
1fe80 61 74 61 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b  ata, int nData);
1fe90 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1fea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1feb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fee0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1fef0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ff00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ff10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ff20 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ff30 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ff40 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ff50 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ff60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ff70 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ff80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ff90 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1ffa0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
1ffb0 65 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 49 6e  ession_create(In
1ffc0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1ffd0 64 62 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  dbName, ref IntP
1ffe0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
1fff0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20000 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20010 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20020 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20030 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20050 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20060 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20070 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20080 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20090 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
200a0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73   void sqlite3ses
200b0 73 69 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74 50  sion_delete(IntP
200c0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
200d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
200e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
200f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20100 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20110 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20130 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20140 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20150 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20160 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20170 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20180 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
20190 69 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50 74  ion_enable(IntPt
201a0 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 65  r session, int e
201b0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
201c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
201d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
201e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
201f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20200 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20210 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20220 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20230 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20240 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20250 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20260 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
20270 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
20280 6e 64 69 72 65 63 74 28 49 6e 74 50 74 72 20 73  ndirect(IntPtr s
20290 65 73 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64 69  ession, int indi
202a0 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rect);....#if !P
202b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
202c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
202d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
202e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
202f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20300 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20310 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20330 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20370 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63 68  e3session_attach
20380 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
20390 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 29   byte[] tblName)
203a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
203b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
203c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
203d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
203e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
203f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20400 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20410 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20420 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20430 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20440 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20450 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
20460 65 33 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65 5f  e3session_table_
20470 66 69 6c 74 65 72 28 49 6e 74 50 74 72 20 73 65  filter(IntPtr se
20480 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 46  ssion, xSessionF
20490 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 49  ilter xFilter, I
204a0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
204b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
204c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
204d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
204e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
204f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20500 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20510 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20520 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20530 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20540 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20550 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20560 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20570 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
20580 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28 49 6e 74  on_changeset(Int
20590 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66  Ptr session, ref
205a0 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
205b0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 68 61   ref IntPtr pCha
205c0 6e 67 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20 21  ngeSet);...#if !
205d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
205e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
205f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20600 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20610 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20620 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20630 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20640 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20650 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20660 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20670 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20680 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20690 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28  te3session_diff(
206a0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
206b0 62 79 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61 6d  byte[] fromDbNam
206c0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
206d0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72  e, ref IntPtr er
206e0 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rMsg);....#if !P
206f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20700 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20710 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20720 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20730 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20740 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20750 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20770 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20780 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20790 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
207a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
207b0 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
207c0 65 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  et(IntPtr sessio
207d0 6e 2c 20 72 65 66 20 69 6e 74 20 6e 50 61 74 63  n, ref int nPatc
207e0 68 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72  hSet, ref IntPtr
207f0 20 70 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d 0a   pPatchSet);....
20800 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20810 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20830 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20860 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20870 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20880 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20890 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
208a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
208b0 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
208c0 69 6f 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74 50  ion_isempty(IntP
208d0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
208e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
208f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20900 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20910 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20920 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20930 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20940 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20960 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20970 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20980 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20990 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
209a0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
209b0 74 5f 73 74 61 72 74 28 72 65 66 20 49 6e 74 50  t_start(ref IntP
209c0 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
209d0 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74   nChangeSet, Int
209e0 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b  Ptr pChangeSet);
209f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20a00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20a10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20a30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20a40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20a50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20a60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20a70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20a80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20a90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20aa0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20ab0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
20ac0 67 65 73 65 74 5f 6e 65 78 74 28 49 6e 74 50 74  geset_next(IntPt
20ad0 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a  r iterator);....
20ae0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20af0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20b00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20b10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20b20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20b30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20b40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20b50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20b60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20b70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20b80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20b90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20ba0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
20bb0 74 5f 6f 70 28 49 6e 74 50 74 72 20 69 74 65 72  t_op(IntPtr iter
20bc0 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  ator, ref IntPtr
20bd0 20 70 54 62 6c 4e 61 6d 65 2c 20 72 65 66 20 69   pTblName, ref i
20be0 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65 66  nt nColumns, ref
20bf0 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
20c00 72 41 63 74 69 6f 6e 43 6f 64 65 20 6f 70 2c 20  rActionCode op, 
20c10 72 65 66 20 69 6e 74 20 62 49 6e 64 69 72 65 63  ref int bIndirec
20c20 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
20c30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20c40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20c50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20c70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20c80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20c90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20ca0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20cb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20cc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20cd0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
20ce0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
20cf0 68 61 6e 67 65 73 65 74 5f 70 6b 28 49 6e 74 50  hangeset_pk(IntP
20d00 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66  tr iterator, ref
20d10 20 49 6e 74 50 74 72 20 70 50 72 69 6d 61 72 79   IntPtr pPrimary
20d20 4b 65 79 73 2c 20 72 65 66 20 69 6e 74 20 6e 43  Keys, ref int nC
20d30 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23 69 66 20  olumns);....#if 
20d40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20d50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20d60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20d70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20d80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20d90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20da0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20db0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20dc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20dd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20de0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20df0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
20e00 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 6c  ite3changeset_ol
20e10 64 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  d(IntPtr iterato
20e20 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64  r, int columnInd
20e30 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ex, ref IntPtr p
20e40 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  Value);....#if !
20e50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20e60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
20e70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20e80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20e90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20ea0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20eb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
20ec0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20ed0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
20ee0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20ef0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20f00 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20f10 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 77  te3changeset_new
20f20 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
20f30 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  , int columnInde
20f40 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56  x, ref IntPtr pV
20f50 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
20f60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20f70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20f80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20f90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20fa0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20fb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20fc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20fe0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20ff0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21000 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21010 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21020 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 66  e3changeset_conf
21030 6c 69 63 74 28 49 6e 74 50 74 72 20 69 74 65 72  lict(IntPtr iter
21040 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e  ator, int column
21050 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74  Index, ref IntPt
21060 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  r pValue);....#i
21070 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21080 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
210a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
210b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
210c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
210d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
210e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
210f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21100 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21110 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
21120 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
21130 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
21140 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28 49 6e 74  fk_conflicts(Int
21150 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65  Ptr iterator, re
21160 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 29  f int conflicts)
21170 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21180 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21190 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
211a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
211b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
211c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
211d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
211e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
211f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21200 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21210 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21220 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21230 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
21240 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28  ngeset_finalize(
21250 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29  IntPtr iterator)
21260 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21270 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21280 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21290 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
212a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
212b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
212c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
212d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
212e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
212f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21300 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21310 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21320 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
21330 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 28 69 6e  ngeset_invert(in
21340 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72 20 70 49  t nIn, IntPtr pI
21350 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c  n, ref int nOut,
21360 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74   ref IntPtr pOut
21370 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21380 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21390 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
213a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
213b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
213c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
213d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
213e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
213f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21400 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21410 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21420 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21430 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
21440 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 28 69  angeset_concat(i
21450 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72 20 70 41  nt nA, IntPtr pA
21460 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74 50 74 72  , int nB, IntPtr
21470 20 70 42 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75   pB, ref int nOu
21480 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f  t, ref IntPtr pO
21490 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
214a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
214b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
214c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
214d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
214e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
214f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21500 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21510 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21520 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21530 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21540 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
21550 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
21560 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e 65 77 28  changegroup_new(
21570 72 65 66 20 49 6e 74 50 74 72 20 63 68 61 6e 67  ref IntPtr chang
21580 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  eGroup);....#if 
21590 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
215a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
215b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
215c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
215d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
215e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
215f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21600 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21610 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21620 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21630 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
21640 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
21650 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
21660 61 64 64 28 49 6e 74 50 74 72 20 63 68 61 6e 67  add(IntPtr chang
21670 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e 44 61 74  eGroup, int nDat
21680 61 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 29  a, IntPtr pData)
21690 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
216a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
216b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
216c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
216d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
216e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
216f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21700 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21720 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21730 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21740 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21750 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
21760 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74 28  ngegroup_output(
21770 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
21780 75 70 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74  up, ref int nDat
21790 61 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 44  a, ref IntPtr pD
217a0 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ata);....#if !PL
217b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
217c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
217d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
217e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
217f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21800 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21810 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21830 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21850 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
21860 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
21870 70 5f 64 65 6c 65 74 65 28 49 6e 74 50 74 72 20  p_delete(IntPtr 
21880 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d  changeGroup);...
21890 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
218a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
218b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
218c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
218d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
218e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
218f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21900 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21910 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21920 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21930 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21940 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21950 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
21960 65 74 5f 61 70 70 6c 79 28 49 6e 74 50 74 72 20  et_apply(IntPtr 
21970 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53  db, int nChangeS
21980 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e  et, IntPtr pChan
21990 67 65 53 65 74 2c 20 78 53 65 73 73 69 6f 6e 46  geSet, xSessionF
219a0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78  ilter xFilter, x
219b0 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20  SessionConflict 
219c0 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74  xConflict, IntPt
219d0 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
219e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
219f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21a00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21a10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21a20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21a30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21a40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21a50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21a60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21a70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21a80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21a90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
21aa0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
21ab0 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49 6e 74 50  _apply_strm(IntP
21ac0 74 72 20 64 62 2c 20 78 53 65 73 73 69 6f 6e 49  tr db, xSessionI
21ad0 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
21ae0 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f  Ptr pIn, xSessio
21af0 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  nFilter xFilter,
21b00 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63   xSessionConflic
21b10 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74  t xConflict, Int
21b20 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
21b30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21b40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21b50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21b60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21b70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21b80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21b90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21ba0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21bb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21bc0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21bd0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21be0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21bf0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
21c00 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72 6d 28 78  et_concat_strm(x
21c10 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
21c20 70 75 74 41 2c 20 49 6e 74 50 74 72 20 70 49 6e  putA, IntPtr pIn
21c30 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  A, xSessionInput
21c40 20 78 49 6e 70 75 74 42 2c 20 49 6e 74 50 74 72   xInputB, IntPtr
21c50 20 70 49 6e 42 2c 20 78 53 65 73 73 69 6f 6e 4f   pInB, xSessionO
21c60 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
21c70 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
21c80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21c90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21ca0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21cb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21cc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21cd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21ce0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21cf0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21d00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21d10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21d20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21d30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21d40 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
21d50 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d 28 78 53  t_invert_strm(xS
21d60 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
21d70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20  ut, IntPtr pIn, 
21d80 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
21d90 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
21da0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
21db0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21dc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21de0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21df0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21e00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21e10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21e20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21e30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21e40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21e50 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21e60 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21e70 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
21e80 5f 73 74 72 6d 28 72 65 66 20 49 6e 74 50 74 72  _strm(ref IntPtr
21e90 20 69 74 65 72 61 74 6f 72 2c 20 78 53 65 73 73   iterator, xSess
21ea0 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c  ionInput xInput,
21eb0 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d   IntPtr pIn);...
21ec0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21ed0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21ee0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21ef0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21f00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21f10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21f20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21f30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21f40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21f50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21f60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21f70 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21f80 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
21f90 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 28  _changeset_strm(
21fa0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
21fb0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
21fc0 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
21fd0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
21fe0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21ff0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22000 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22010 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22020 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22030 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22040 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22050 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22060 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22080 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22090 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
220a0 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65  3session_patchse
220b0 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65  t_strm(IntPtr se
220c0 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f  ssion, xSessionO
220d0 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
220e0 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
220f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22100 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22110 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22120 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22130 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22140 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22150 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22160 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22170 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22180 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22190 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
221a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
221b0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
221c0 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e 74  oup_add_strm(Int
221d0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c  Ptr changeGroup,
221e0 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78   xSessionInput x
221f0 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49  Input, IntPtr pI
22200 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
22210 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22220 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22230 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22240 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22250 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22260 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22270 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22290 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
222a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
222b0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
222c0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
222d0 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75  hangegroup_outpu
222e0 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68  t_strm(IntPtr ch
222f0 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73  angeGroup, xSess
22300 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
22310 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
22320 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65  ..#endif..    #e
22330 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23 65  ndregion..    #e
22340 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
223a0 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74     #region sqlit
223b0 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61  e interop api ca
223c0 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63  lls (.NET Compac
223d0 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79  t Framework only
223e0 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  )..#if PLATFORM_
223f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22400 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e   && !SQLITE_STAN
22410 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  DARD..    [DllIm
22420 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22430 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
22440 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
22450 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  id sqlite3_last_
22460 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74  insert_rowid_int
22470 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
22480 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b  ref long rowId);
22490 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
224a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
224b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
224c0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
224d0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
224e0 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
224f0 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
22500 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22510 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
22520 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22530 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22540 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
22550 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69  hwater_interop(i
22560 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65  nt resetFlag, re
22570 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
22580 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22590 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
225a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
225b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
225c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
225d0 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e  3_bind_double_in
225e0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
225f0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
22600 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
22610 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
22620 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22630 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22640 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
22650 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
22660 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
22670 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
22680 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
22690 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
226a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
226b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
226c0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
226d0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
226e0 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
226f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22700 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22710 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
22720 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f  nd_uint64_intero
22730 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
22740 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c  nt index, ref ul
22750 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
22760 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22770 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
22780 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22790 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
227a0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
227b0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
227c0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
227d0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
227e0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
227f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22800 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
22810 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22820 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
22830 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
22840 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
22850 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
22860 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
22870 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22880 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
22890 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
228a0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
228b0 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f  e3_value_double_
228c0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
228d0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
228e0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
228f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22900 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
22910 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22920 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
22930 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  ue_int64_interop
22940 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49  (IntPtr p, ref I
22950 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
22960 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22970 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
22980 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22990 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
229a0 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
229b0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
229c0 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
229d0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
229e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
229f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
22a00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22a10 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22a20 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
22a30 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
22a40 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49  r context, ref I
22a50 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
22a60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22a70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
22a80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22a90 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
22aa0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
22ab0 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f  sposable_module_
22ac0 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
22ad0 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74    IntPtr db, Int
22ae0 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72  Ptr name, IntPtr
22af0 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56   pModule, int iV
22b00 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20  ersion, xCreate 
22b10 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20  xCreate,..      
22b20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e    xConnect xConn
22b30 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20  ect, xBestIndex 
22b40 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73  xBestIndex, xDis
22b50 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
22b60 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ect,..        xD
22b70 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c  estroy xDestroy,
22b80 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43   xOpen xOpen, xC
22b90 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69  lose xClose, xFi
22ba0 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20  lter xFilter,.. 
22bb0 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65         xNext xNe
22bc0 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78  xt, xEof xEof, x
22bd0 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20  Column xColumn, 
22be0 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78  xRowId xRowId, x
22bf0 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d  Update xUpdate,.
22c00 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20  .        xBegin 
22c10 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53  xBegin, xSync xS
22c20 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f  ync, xCommit xCo
22c30 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20  mmit, xRollback 
22c40 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
22c50 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
22c60 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c  n xFindFunction,
22c70 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
22c80 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  , xSavepoint xSa
22c90 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20  vepoint,..      
22ca0 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65    xRelease xRele
22cb0 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ase, xRollbackTo
22cc0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e   xRollbackTo, In
22cd0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
22ce0 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74  ,..        xDest
22cf0 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
22d00 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64  oyModule);..#end
22d10 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46  if..    // PLATF
22d20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22d30 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
22d40 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65  STANDARD..    #e
22d50 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
22d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22db0 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
22dc0 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66  e Delegates..#if
22dd0 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
22de0 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
22df0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22e00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
22e10 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
22e20 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
22e30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22e40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
22e50 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
22e60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72  iteErrorCode xCr
22e70 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  eate(..        I
22e80 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
22e90 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
22ea0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
22eb0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
22ec0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
22ed0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
22ee0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
22ef0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
22f00 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
22f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
22f60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22f70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22f80 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
22f90 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
22fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22fb0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
22fc0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
22fd0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
22fe0 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
22ff0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
23000 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
23010 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
23020 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
23030 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
23040 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
23050 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
23060 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
23070 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
23080 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
23090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230d0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
230e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
230f0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
23100 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
23110 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
23120 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23130 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
23140 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
23150 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
23160 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49  ndex(..        I
23170 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
23180 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
23190 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
231a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
231b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
231f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23200 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23210 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
23220 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
23230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23240 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
23250 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
23260 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
23270 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
23280 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
23290 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
232a0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
232b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232f0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
23300 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23310 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
23320 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
23330 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
23340 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23350 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
23360 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
23370 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
23380 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
23390 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
233a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
233b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
23400 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23410 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23420 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
23430 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
23440 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23450 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23460 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
23470 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23480 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
23490 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
234a0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
234b0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
234c0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
234d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23510 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
23520 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23530 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
23540 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
23550 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
23560 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23570 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
23580 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
23590 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
235a0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ose(..        In
235b0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
235c0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
23620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23640 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
23650 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
23660 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23680 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
23690 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
236a0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
236b0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
236c0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
236d0 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
236e0 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
236f0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
23700 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
23710 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a  r argv..    );..
23720 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
23730 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
23780 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23790 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
237a0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
237b0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
237c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
237d0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
237e0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
237f0 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
23800 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
23810 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
23820 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
23870 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
23880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23890 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
238a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
238b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
238c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
238d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
238e0 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
238f0 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49  xEof(..        I
23900 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
23910 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
23920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23960 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
23970 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23980 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23990 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
239a0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
239b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
239c0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
239d0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
239e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
239f0 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
23a00 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
23a10 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r,..        IntP
23a20 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
23a30 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
23a40 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
23a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
23aa0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23ab0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23ac0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
23ad0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
23ae0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23af0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
23b00 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
23b10 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
23b20 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
23b30 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
23b40 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  or,..        ref
23b50 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
23b60 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
23b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
23bc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23bd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
23be0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
23bf0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
23c00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23c10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
23c20 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
23c30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
23c40 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
23c50 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
23c60 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
23c70 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
23c80 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
23c90 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
23ca0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
23cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
23d00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23d10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23d20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
23d30 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
23d40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23d50 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
23d60 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
23d70 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
23d80 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
23d90 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
23da0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f  ////////////////
23de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
23e00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23e10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23e20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
23e30 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
23e40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23e50 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23e60 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
23e70 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
23e80 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20  ode xSync(..    
23e90 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
23ea0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
23eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
23f00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23f10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23f20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
23f30 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
23f40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23f50 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23f60 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
23f70 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
23f80 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ode xCommit(..  
23f90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
23fa0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
23fb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23fc0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
24000 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24010 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24020 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
24030 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
24040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24050 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
24060 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
24070 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
24080 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28  rCode xRollback(
24090 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
240a0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
240b0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
240c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
24110 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24120 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
24130 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
24140 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
24150 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24160 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
24170 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46   delegate int xF
24180 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
24190 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
241a0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
241b0 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20   nArg,..        
241c0 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
241d0 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
241e0 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
241f0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ck,..        ref
24200 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74   IntPtr pUserDat
24210 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  a..    );....   
24220 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
24230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24270 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24280 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24290 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
242a0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
242b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
242c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
242d0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
242e0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
242f0 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20  Code xRename(.. 
24300 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
24310 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
24320 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29  tPtr zNew..    )
24330 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
24340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24380 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
24390 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
243a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
243b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
243c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
243d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
243e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
243f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
24400 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61  iteErrorCode xSa
24410 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
24420 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
24430 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
24440 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
24450 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
24460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
244b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
244c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
244d0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
244e0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
244f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24500 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
24510 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
24520 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65  eErrorCode xRele
24530 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ase(..        In
24540 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
24550 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
24560 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
24570 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
24580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
245c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
245d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
245e0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
245f0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
24600 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24610 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
24620 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
24630 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
24640 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
24650 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  To(..        Int
24660 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
24670 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
24680 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
24690 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
246a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
246d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
246e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
246f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24700 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
24710 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
24720 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24730 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
24740 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
24750 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74  egate void xDest
24760 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72  royModule(IntPtr
24770 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a   pClientData);..
24780 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
24790 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
247a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
247f0 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
24800 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20  Structures..#if 
24810 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
24820 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75  TABLE..    [Stru
24830 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
24840 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
24850 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24860 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f  truct sqlite3_mo
24870 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  dule..    {..   
24880 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
24890 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  iVersion;..     
248a0 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61 74     public xCreat
248b0 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20  e xCreate;..    
248c0 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e      public xConn
248d0 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20  ect xConnect;.. 
248e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42         public xB
248f0 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
24900 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  dex;..        pu
24910 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74  blic xDisconnect
24920 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20   xDisconnect;.. 
24930 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44         public xD
24940 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b  estroy xDestroy;
24950 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
24960 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20   xOpen xOpen;.. 
24970 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
24980 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20  lose xClose;..  
24990 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69        public xFi
249a0 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20  lter xFilter;.. 
249b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e         public xN
249c0 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20  ext xNext;..    
249d0 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20      public xEof 
249e0 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70  xEof;..        p
249f0 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43  ublic xColumn xC
24a00 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
24a10 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52  public xRowId xR
24a20 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70  owId;..        p
24a30 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55  ublic xUpdate xU
24a40 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  pdate;..        
24a50 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42  public xBegin xB
24a60 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  egin;..        p
24a70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e  ublic xSync xSyn
24a80 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  c;..        publ
24a90 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  ic xCommit xComm
24aa0 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  it;..        pub
24ab0 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  lic xRollback xR
24ac0 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20  ollback;..      
24ad0 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75    public xFindFu
24ae0 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
24af0 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  tion;..        p
24b00 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52  ublic xRename xR
24b10 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  ename;..        
24b20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  /* The methods a
24b30 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
24b40 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c  ion 1 of the sql
24b50 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
24b60 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20        * object. 
24b70 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65   Those below are
24b80 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61   for version 2 a
24b90 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a  nd greater. */..
24ba0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
24bb0 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70  Savepoint xSavep
24bc0 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  oint;..        p
24bd0 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78  ublic xRelease x
24be0 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20  Release;..      
24bf0 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61    public xRollba
24c00 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ckTo xRollbackTo
24c10 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
24c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24c70 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
24c80 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
24c90 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
24ca0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
24cb0 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20  lite3_vtab..    
24cc0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
24cd0 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  c IntPtr pModule
24ce0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
24cf0 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e  c int nRef; /* N
24d00 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f  O LONGER USED */
24d10 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
24d20 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b   IntPtr zErrMsg;
24d30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
24d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
24d90 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
24da0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
24db0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
24dc0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
24dd0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
24de0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
24df0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
24e00 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  VTab;..    }....
24e10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d  ///////////////.
24e60 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
24e70 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
24e80 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
24e90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
24ea0 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
24eb0 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
24ec0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
24ed0 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
24ee0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
24ef0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
24f00 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63  ndexConstraint c
24f10 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20  onstraint..     
24f20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
24f30 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
24f40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24f50 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
24f60 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  raint != null)..
24f70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
24f90 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61  Column = constra
24fa0 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  int.iColumn;..  
24fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
24fc0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70   = constraint.op
24fd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24fe0 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73     usable = cons
24ff0 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a  traint.usable;..
25000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25010 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f  iTermOffset = co
25020 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66  nstraint.iTermOf
25030 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  fset;..         
25040 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
25050 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
25060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
250b0 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e  blic int iColumn
250c0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
250d0 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  c SQLiteIndexCon
250e0 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20  straintOp op;.. 
250f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
25100 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20  te usable;..    
25110 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
25120 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
25130 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
25140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25180 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
25190 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
251a0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
251b0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
251c0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
251d0 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20  index_orderby.. 
251e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
251f0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
25200 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20  ex_orderby(..   
25210 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
25220 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65  ndexOrderBy orde
25230 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
25240 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
25250 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
25260 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25270 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20   if (orderBy != 
25280 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25290 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
252a0 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20        iColumn = 
252b0 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b  orderBy.iColumn;
252c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
252d0 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79    desc = orderBy
252e0 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20  .desc;..        
252f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
25300 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
25310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25350 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
25360 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
25370 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d  n; /* Column num
25380 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ber */..        
25390 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63  public byte desc
253a0 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20  ;   /* True for 
253b0 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
253c0 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d   ASC. */..    }.
253d0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
253e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
253f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25420 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
25430 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
25440 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
25450 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25460 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
25470 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
25480 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  age..    {..    
25490 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
254a0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
254b0 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20  int_usage(..    
254c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
254d0 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
254e0 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  ge constraintUsa
254f0 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ge..            
25500 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
25510 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
25520 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25530 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73  if (constraintUs
25540 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  age != null)..  
25550 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25560 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
25570 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61  vIndex = constra
25580 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64  intUsage.argvInd
25590 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex;..           
255a0 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73       omit = cons
255b0 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74  traintUsage.omit
255c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
255d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
255e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
255f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25630 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
25640 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20   int argvIndex; 
25650 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72  /* if >0, constr
25660 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
25670 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20  argv to xFilter 
25680 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
25690 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20  ic byte omit;   
256a0 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65    /* Do not code
256b0 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
256c0 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a   constraint */..
256d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
256e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
256f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
25730 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
25740 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
25750 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
25760 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
25770 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
25780 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
25790 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20   Inputs */..    
257a0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
257b0 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e  Constraint; /* N
257c0 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
257d0 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20   in aConstraint 
257e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
257f0 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
25800 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  raint;..        
25810 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65  public int nOrde
25820 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65  rBy;    /* Numbe
25830 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20  r of entries in 
25840 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20  aOrderBy */..   
25850 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
25860 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20  tr aOrderBy;..  
25870 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73        /* Outputs
25880 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
25890 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
258a0 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20  traintUsage;..  
258b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
258c0 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20   idxNum;        
258d0 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65     /* Number use
258e0 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68  d to identify th
258f0 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20  e index */..    
25900 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
25910 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20  g idxStr;       
25920 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73   /* String, poss
25930 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  ibly obtained fr
25940 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  om sqlite3_mallo
25950 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  c */..        pu
25960 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46  blic int needToF
25970 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72  reeIdxStr; /* Fr
25980 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20  ee idxStr using 
25990 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
259a0 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20  f true */..     
259b0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72     public int or
259c0 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20  derByConsumed;  
259d0 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75  /* True if outpu
259e0 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64  t is already ord
259f0 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ered */..       
25a00 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65   public double e
25a10 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a  stimatedCost; /*
25a20 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20   Estimated cost 
25a30 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e  of using this in
25a40 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  dex */..        
25a50 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74 69  public long esti
25a60 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a 20  matedRows;   /* 
25a70 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72  Estimated number
25a80 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65   of rows returne
25a90 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  d */..        pu
25aa0 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
25ab0 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20  Flags idxFlags; 
25ac0 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54  /* Mask of SQLIT
25ad0 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66  E_INDEX_SCAN_* f
25ae0 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lags */..       
25af0 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c   public long col
25b00 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f 2a  Used;         /*
25b10 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66 20   Input: Mask of 
25b20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79 20  columns used by 
25b30 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20  statement */..  
25b40 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
25b50 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
25b60 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
25b70 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
25b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bc0 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 2e  /....  #region .
25bd0 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
25be0 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72 69  ework (only) Cri
25bf0 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61 73  ticalHandle Clas
25c00 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  s..#if PLATFORM_
25c10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25c20 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73  ..  internal abs
25c30 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69 74  tract class Crit
25c40 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69  icalHandle : IDi
25c50 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20  sposable..  {.. 
25c60 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
25c70 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20  _isClosed;..    
25c80 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72  protected IntPtr
25c90 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20   handle;....    
25ca0 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69 63  protected Critic
25cb0 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  alHandle(IntPtr 
25cc0 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
25cd0 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
25ce0 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c    handle = inval
25cf0 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a  idHandleValue;..
25d00 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20        _isClosed 
25d10 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d  = false;..    }.
25d20 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c  ...    ~Critical
25d30 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d  Handle()..    {.
25d40 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66  .      Dispose(f
25d50 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  alse);..    }...
25d60 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69  .    private voi
25d70 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20  d Cleanup()..   
25d80 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49   {..      if (!I
25d90 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  sClosed)..      
25da0 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  {..        this.
25db0 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
25dc0 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ;..        if (!
25dd0 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20  IsInvalid)..    
25de0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25df0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
25e00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e  ;..          GC.
25e10 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
25e20 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
25e30 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   }..      }..   
25e40 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
25e50 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20   void Close().. 
25e60 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
25e70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
25e80 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
25e90 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a  void Dispose()..
25ea0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
25eb0 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
25ec0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
25ed0 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64  ted virtual void
25ee0 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
25ef0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d  sposing)..    {.
25f00 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29  .      Cleanup()
25f10 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
25f20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72 61  protected abstra
25f30 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  ct bool ReleaseH
25f40 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
25f50 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53  protected void S
25f60 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  etHandle(IntPtr 
25f70 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  value)..    {.. 
25f80 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61       handle = va
25f90 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lue;..    }.... 
25fa0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
25fb0 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
25fc0 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  d()..    {..    
25fd0 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72    _isClosed = tr
25fe0 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75  ue;..      GC.Su
25ff0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
26000 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  his);..    }....
26010 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
26020 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d  IsClosed..    {.
26030 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74  .      get { ret
26040 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d  urn _isClosed; }
26050 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
26060 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 62  ublic abstract b
26070 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
26080 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b     {..      get;
26090 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a  ..    }....  }..
260a0 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65  #endif..  #endre
260b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
260c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26100 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
26110 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
26120 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
26130 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
26140 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
26150 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
26160 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
26170 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
26180 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
26190 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
261a0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
261b0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
261c0 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
261d0 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
261e0 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
261f0 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
26200 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26210 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
26220 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
26230 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
26240 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
26250 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
26260 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
26270 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
26280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
26290 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
262a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
262b0 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
262c0 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
262d0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
262e0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
262f0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
26300 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26340 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
26350 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
26360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26370 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
26380 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
26390 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
263a0 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
263b0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
26400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
26410 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  ate bool ownHand
26420 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
26430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26470 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26480 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
26490 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
264a0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
264b0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
264c0 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  db)..        {..
264d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
264e0 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  db != null)..   
264f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
26500 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26510 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
26520 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
26530 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  (db.syncRoot)..#
26540 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
26550 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26570 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d  turn db.handle;.
26580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26590 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
265a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
265b0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
265c0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
265d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
265e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26620 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
26630 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  rnal SQLiteConne
26640 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50  ctionHandle(IntP
26650 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48  tr db, bool ownH
26660 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
26670 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61      : this(ownHa
26680 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
26690 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
266a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
266b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
266c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
266d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
266e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
266f0 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e       this.ownHan
26700 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b  dle = ownHandle;
26710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26720 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
26730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26740 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
26750 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
26760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
267a0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
267b0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
267c0 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e  nHandle(bool own
267d0 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
267e0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
267f0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
26800 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
26810 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26820 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
26830 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26840 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
26850 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
26860 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f  ugData.connectio
26870 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
26880 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
26890 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
268a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
268e0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
268f0 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
26900 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
26910 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
26920 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
26930 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26940 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
26950 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
26960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26980 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29   if (!ownHandle)
26990 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
269a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
269b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
269c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
269d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
269e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
269f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a00 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
26a10 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
26a20 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
26a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a40 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
26a50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66  tr.Zero);....#if
26a60 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
26a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26a80 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
26a90 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
26aa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26ab0 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e         closeConn
26ac0 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
26ad0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73  alHandle);..#els
26ae0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
26af0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
26b00 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
26b10 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
26b20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
26b30 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
26b40 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
26b50 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndle);..#endif..
26b60 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
26b70 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
26b80 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26b90 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
26ba0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bc0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
26bd0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
26be0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
26bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c00 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
26c10 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
26c20 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
26c30 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
26c40 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
26c50 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
26c60 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
26c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26c80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
26c90 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
26ca0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26cc0 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
26cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ce0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
26cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26d00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26d10 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
26d20 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
26d30 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
26d40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d60 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
26d70 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
26d80 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26da0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
26db0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26dd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
26de0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
26df0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
26e00 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
26e10 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
26e20 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
26e30 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f  ugData.connectio
26e40 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
26e50 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
26e60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26e70 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
26e80 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
26e90 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
26ea0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
26eb0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26ec0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
26ed0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
26ee0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
26ef0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
26f00 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
26f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26f20 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
26f30 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
26f40 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
26f50 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
26f60 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f80 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
26f90 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
26fa0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
26fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fc0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
26fd0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
26fe0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
27000 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30  seConnection: {0
27010 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
27020 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
27030 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
27040 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
27050 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
27060 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
27070 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
27080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27090 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
270a0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
270b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
270c0 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
270d0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
270e0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
270f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27110 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
27120 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
27130 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27150 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
27160 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
27170 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27180 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
27190 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
271a0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
271b0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
271c0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
271d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
271e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
271f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27230 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
27240 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
27250 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
27260 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
27270 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27280 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
27290 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
272a0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
272b0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
272c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
272d0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
272e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
272f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27320 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27330 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
27340 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20  OwnHandle..     
27350 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27360 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
27370 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
27380 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27390 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
273a0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
273b0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
273c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
273d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
273e0 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48       return ownH
273f0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
27400 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27410 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
27420 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
27430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27470 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
27480 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
27490 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
274a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
274b0 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
274c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
274d0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
274e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
274f0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
27500 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
27510 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
27520 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27530 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27540 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
27550 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
27570 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27580 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27590 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
275a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
275e0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
275f0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
27600 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
27610 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
27620 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
27630 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27640 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
27650 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
27660 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
27670 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27680 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
27690 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
276a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
276b0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
276c0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
276d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
276e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27720 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27730 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
27740 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c  atementHandle Cl
27750 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76  ass..    // Prov
27760 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
27770 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
27780 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
27790 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20  tatements...    
277a0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
277b0 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74  class SQLiteStat
277c0 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72  ementHandle : Cr
277d0 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
277e0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
277f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27800 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
27810 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
27820 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
27830 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
27840 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
27850 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27890 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
278a0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
278b0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
278c0 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
278d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
278e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27920 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
27930 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
27940 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
27950 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
27960 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  le stmt)..      
27970 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27980 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c   if (stmt != nul
27990 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
279a0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
279b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
279c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
279d0 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e    lock (stmt.syn
279e0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
279f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27a10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74         return st
27a20 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  mt.handle;..    
27a30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27a40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
27a50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27a60 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
27a70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27a80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27ad0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
27ae0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
27af0 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
27b00 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
27b10 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a  , IntPtr stmt)..
27b20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
27b30 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
27b40 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
27b50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27b60 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
27b70 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
27b80 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
27b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27ba0 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
27bb0 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
27bc0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73       SetHandle(s
27bd0 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tmt);..         
27be0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
27bf0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
27c50 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74  ivate SQLiteStat
27c60 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20  ementHandle().. 
27c70 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
27c80 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
27c90 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
27ca0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
27cb0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
27cc0 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
27cd0 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61  ef DebugData.sta
27ce0 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23  tementCount);..#
27cf0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
27d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
27d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
27d60 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
27d70 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
27d80 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
27d90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
27da0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
27db0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
27dc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27dd0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
27de0 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
27df0 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
27e00 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
27e30 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
27e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e50 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
27e60 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
27e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e80 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
27e90 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
27ea0 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  t(cnn, localHand
27eb0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
27ec0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
27ed0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
27ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27f00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27f10 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
27f20 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
27f30 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
27f40 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
27f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
27f60 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
27f70 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
27f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f90 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74     "FinalizeStat
27fa0 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ement: {0}", loc
27fb0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
27fc0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
27fd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
27fe0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
27ff0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
28000 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28010 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
28020 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
28030 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
28040 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
28050 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28070 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
28080 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
28090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
280b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
280c0 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
280d0 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e  atement(cnn, han
280e0 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
280f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
28100 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
28110 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
28120 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
28130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
28140 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
28150 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
28160 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
28170 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
28180 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
28190 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
281a0 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
281b0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
281c0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
281d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
281e0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
281f0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
28200 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
28210 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
28220 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
28230 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
28240 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
28250 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
28260 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
28270 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
28280 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
28290 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
282a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
282b0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
282c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
282d0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
282e0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
282f0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
28300 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
28310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
28320 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
28330 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28350 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
28360 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63  tement: {0}, exc
28370 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
28380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28390 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
283a0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
283b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
283c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
283d0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
283e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
28400 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
28410 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28420 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
28430 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
28440 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28450 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
28460 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
28470 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
28480 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
28490 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
284a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
284b0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
284c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
284d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
284e0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
284f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28500 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
28510 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
28520 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
28530 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
28540 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28590 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
285a0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
285b0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
285c0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
285d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
285e0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
285f0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
28600 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65   DebugData.state
28610 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  mentCount);..   
28620 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
28630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28680 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
28690 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
286a0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
286b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
286c0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
286d0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
286e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
286f0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
28700 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
28710 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28730 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28740 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
28750 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
28760 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
28770 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28780 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28790 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
287a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
287f0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
28800 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
28810 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
28820 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
28830 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28840 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
28850 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
28860 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
28870 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28890 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
288a0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
288b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
288c0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
288d0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
288e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
288f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28930 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
28940 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  on SQLiteBackupH
28950 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
28960 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
28970 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
28980 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
28990 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62  SQLite backup ob
289a0 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  jects...    inte
289b0 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
289c0 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  s SQLiteBackupHa
289d0 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
289e0 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
289f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
28a00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28a10 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
28a20 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
28a30 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
28a40 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
28a50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28aa0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
28ab0 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
28ac0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
28ad0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
28ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
28b30 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
28b40 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
28b50 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b  ntPtr(SQLiteBack
28b60 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29  upHandle backup)
28b70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
28b80 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63           if (bac
28b90 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  kup != null)..  
28ba0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
28bb0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
28bc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28bd0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
28be0 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f   (backup.syncRoo
28bf0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
28c00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70     return backup
28c30 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
28c40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
28c50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
28c60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
28c70 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
28c80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28c90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28ce0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
28cf0 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
28d00 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
28d10 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
28d20 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  Ptr backup)..   
28d30 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
28d40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
28d50 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
28d60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28d70 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
28d80 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
28d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28db0 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b   this.cnn = cnn;
28dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28dd0 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b    SetHandle(back
28de0 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  up);..          
28df0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
28e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
28e60 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75  vate SQLiteBacku
28e70 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  pHandle()..     
28e80 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
28e90 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
28ea0 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
28eb0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
28ec0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
28ed0 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
28ee0 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43  ebugData.backupC
28ef0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
28f00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28f10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
28f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28f60 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
28f70 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
28f80 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
28f90 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
28fa0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
28fb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
28fc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28fd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
28ff0 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
29000 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
29010 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
29020 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
29030 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
29040 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ero);....       
29050 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
29060 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
29070 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
29080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
29090 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42  LiteBase.FinishB
290a0 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c  ackup(cnn, local
290b0 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  Handle);....#if 
290c0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
290d0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
290e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
290f0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
29100 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29110 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
29120 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
29130 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
29140 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29160 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
29170 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
291a0 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  ckup: {0}", loca
291b0 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
291c0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
291d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
291e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
291f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29210 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
29220 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
29230 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
29240 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
29250 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29270 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
29280 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
29290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
292a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
292b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
292c0 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
292d0 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  p(cnn, handle);.
292e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
292f0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
29300 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
29310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
29330 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
29340 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
29350 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
29360 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
29370 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
29380 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
29390 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
293a0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
293b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
293c0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
293d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
293e0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
293f0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
29400 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
29410 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
29420 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
29430 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
29440 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
29450 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
29460 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
29470 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
29480 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
29490 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
294a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
294b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
294c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294d0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
294e0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
294f0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
29500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29510 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
29520 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
29530 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29540 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69             "Fini
29550 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65  shBackup: {0}, e
29560 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
29570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29580 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
29590 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
295a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
295b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
295c0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
295d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
295e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295f0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
29600 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29610 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
29620 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
29630 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
29640 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29650 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
29660 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
29670 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
29680 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29690 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
296a0 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
296b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
296c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
296d0 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
296e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
296f0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
29700 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
29710 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
29720 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
29730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
29740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29780 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
29790 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
297a0 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
297b0 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
297c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
297d0 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
297e0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
297f0 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
29800 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  kupCount);..    
29810 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
29820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
29830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29870 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
29880 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
29890 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
298a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
298b0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
298c0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
298d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
298e0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
298f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
29900 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
29910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
29920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29930 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
29940 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
29950 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
29960 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29970 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
29980 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
29990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
299e0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
299f0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
29a00 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
29a10 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
29a20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
29a30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
29a40 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
29a50 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29a60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29a70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29a80 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
29a90 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
29aa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
29ab0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
29ac0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
29ad0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
29ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b20 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
29b30 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  n SQLiteBlobHand
29b40 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
29b50 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   Provides finali
29b60 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66  zation support f
29b70 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c  or unmanaged SQL
29b80 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74 73  ite blob objects
29b90 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
29ba0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
29bb0 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a 20  iteBlobHandle : 
29bc0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
29bd0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
29be0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29bf0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
29c00 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
29c10 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
29c20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
29c30 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
29c40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
29c90 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
29ca0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
29cb0 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
29cc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29d10 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
29d20 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
29d30 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
29d40 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20  QLiteBlobHandle 
29d50 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 7b  blob)..        {
29d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
29d70 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d   (blob != null).
29d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
29d90 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
29da0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
29db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
29dc0 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52 6f  ock (blob.syncRo
29dd0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
29de0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e00 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 2e      return blob.
29e10 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
29e20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29e30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29e40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
29e50 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
29e60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29e70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29eb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29ec0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
29ed0 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53 51  iteBlobHandle(SQ
29ee0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
29ef0 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72  ndle cnn, IntPtr
29f00 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20   blob)..        
29f10 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
29f20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
29f30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29f40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
29f50 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
29f60 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
29f70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29f80 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
29f90 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20  .cnn = cnn;..   
29fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
29fb0 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20  Handle(blob);.. 
29fc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29fd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29fe0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a030 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2a040 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 29  LiteBlobHandle()
2a050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2a060 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
2a070 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2a080 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2a090 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
2a0a0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
2a0b0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2a0c0 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  blobCount);..#en
2a0d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2a0e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a130 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2a140 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
2a150 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
2a160 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
2a170 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
2a180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2a190 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2a1a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a1c0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
2a1d0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
2a1e0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
2a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a200 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
2a210 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a230 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
2a240 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2a250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a260 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
2a270 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63  oseBlob(cnn, loc
2a280 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
2a290 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2a2a0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2a2b0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2a2c0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2a2d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2a2f0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
2a300 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
2a310 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
2a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a330 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
2a340 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
2a350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a360 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42           "CloseB
2a370 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  lob: {0}", local
2a380 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
2a390 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2a3a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a3b0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2a3c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a3d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a3e0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2a3f0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2a400 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2a410 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2a420 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a440 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
2a450 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2a470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a480 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2a490 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e  ase.CloseBlob(cn
2a4a0 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4c0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
2a4d0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a500 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2a510 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2a520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a530 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
2a540 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2a550 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29  gData.blobCount)
2a560 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
2a570 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
2a580 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2a590 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2a5a0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
2a5b0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2a5c0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2a5d0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2a5e0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
2a5f0 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
2a600 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2a610 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2a620 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2a630 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
2a640 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2a650 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2a670 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2a680 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a690 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2a6a0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2a6b0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2a6c0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2a6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6e0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2a6f0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2a700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a710 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a       "CloseBlob:
2a720 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2a730 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a750 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2a760 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2a770 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a780 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2a790 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2a7a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a7b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2a7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2a7e0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2a7f0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2a800 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a810 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a820 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2a830 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2a840 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a860 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2a870 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2a880 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2a890 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2a8a0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2a8b0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2a8c0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2a8d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2a8e0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2a8f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2a900 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a940 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a950 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2a960 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2a970 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2a980 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2a990 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2a9a0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2a9b0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2a9c0 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d  ata.blobCount);.
2a9d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
2a9e0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
2a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2aa40 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
2aa50 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
2aa60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2aa70 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
2aa80 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2aa90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2aaa0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2aab0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2aac0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2aad0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2aae0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2aaf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2ab00 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
2ab10 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
2ab20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2ab30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2ab40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2ab50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2aba0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
2abb0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
2abc0 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
2abd0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2abe0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2abf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ac00 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2ac10 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2ac20 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2ac30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ac40 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
2ac50 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
2ac60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2ac70 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2ac80 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
2ac90 67 69 6f 6e 0d 0a 7d 0d 0a                       gion..}..