System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 90e2915ada28a9e71501af23f3fb8a566404b899:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e  (TRACE_DETECTION
01a0: 20 7c 7c 20 54 52 41 43 45 5f 53 48 41 52 45 44   || TRACE_SHARED
01b0: 20 7c 7c 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   || TRACE_PRELOA
01c0: 44 20 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c  D || TRACE_HANDL
01d0: 45 29 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  E)..  using Syst
01e0: 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d  em.Diagnostics;.
01f0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0200: 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  ng System.Collec
0210: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a  tions.Generic;..
0220: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49    using System.I
0230: 4f 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  O;..  using Syst
0240: 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a  em.Reflection;..
0250: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0270: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
0280: 2e 53 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64  .Security;..#end
0290: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
02a0: 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74  stem.Runtime.Int
02b0: 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d  eropServices;...
02c0: 0a 23 69 66 20 28 4e 45 54 5f 34 30 20 7c 7c 20  .#if (NET_40 || 
02d0: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
02e0: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
02f0: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
0300: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 29 20 26 26  1 || NET_462) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
0360: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
0370: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69  FRAMEWORK..  usi
0380: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0390: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
03a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
03b0: 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55  FRAMEWORK || COU
03c0: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69  NT_HANDLE..  usi
03d0: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
03e0: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
03f0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58    using System.X
0400: 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ml;....  #region
0410: 20 44 65 62 75 67 20 44 61 74 61 20 53 74 61 74   Debug Data Stat
0420: 69 63 20 43 6c 61 73 73 0d 0a 23 69 66 20 43 4f  ic Class..#if CO
0430: 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c 20 44 45  UNT_HANDLE || DE
0440: 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  BUG..  /// <summ
0450: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
0460: 20 63 6c 61 73 73 20 65 6e 63 61 70 73 75 6c 61   class encapsula
0470: 74 65 73 20 73 6f 6d 65 20 74 72 61 63 6b 69 6e  tes some trackin
0480: 67 20 64 61 74 61 20 74 68 61 74 20 69 73 20 75  g data that is u
0490: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
04a0: 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 65 73  g..  /// and tes
04b0: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 0d 0a  ting purposes...
04c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04d0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
04e0: 74 69 63 20 63 6c 61 73 73 20 44 65 62 75 67 44  tic class DebugD
04f0: 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ata..  {..      
0500: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
0510: 44 61 74 61 0d 0a 23 69 66 20 44 45 42 55 47 0d  Data..#if DEBUG.
0520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0530: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0540: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
0550: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 73 65 76  d to protect sev
0560: 65 72 61 6c 20 73 74 61 74 69 63 20 66 69 65 6c  eral static fiel
0570: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
0580: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0590: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
05a0: 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
05b0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d  staticSyncRoot =
05c0: 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
05d0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0630: 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69 74 69     #region Criti
0640: 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74  cal Handle Count
0650: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0660: 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  nly)..#if COUNT_
0670: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f  HANDLE..      //
0680: 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  ..      // NOTE:
0690: 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 72 65   These counts re
06a0: 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f 74 61  present the tota
06b0: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73  l number of outs
06c0: 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  tanding..      /
06d0: 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73  /       (non-dis
06e0: 70 6f 73 65 64 29 20 43 72 69 74 69 63 61 6c 48  posed) CriticalH
06f0: 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20 6f 62  andle derived ob
0700: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a  ject instances..
0710: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
0720: 72 65 61 74 65 64 20 62 79 20 74 68 69 73 20 6c  reated by this l
0730: 69 62 72 61 72 79 20 61 6e 64 20 61 72 65 20 70  ibrary and are p
0740: 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75 73 65  rimarily for use
0750: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20   by..      //   
0760: 20 20 20 20 74 68 65 20 74 65 73 74 20 73 75 69      the test sui
0770: 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75 6e 74  te.  These count
0780: 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e 74 65  s are incremente
0790: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
07a0: 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63 69 61  //       associa
07b0: 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f 72 73  ted constructors
07c0: 20 61 6e 64 20 61 72 65 20 64 65 63 72 65 6d 65   and are decreme
07d0: 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20  nted upon the.. 
07e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 75       //       su
07f0: 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74  ccessful complet
0800: 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73 6f 63  ion of the assoc
0810: 69 61 74 65 64 20 52 65 6c 65 61 73 65 48 61 6e  iated ReleaseHan
0820: 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  dle..      //   
0830: 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20      methods...  
0840: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e      //..      in
0850: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e  ternal static in
0860: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  t connectionCoun
0870: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
0880: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 73 74  al static int st
0890: 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20  atementCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 61 63 6b 75 70 43  atic int backupC
08c0: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
08d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
08e0: 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e   blobCount;..#en
08f0: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
0900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0960: 20 20 23 72 65 67 69 6f 6e 20 53 65 74 74 69 6e    #region Settin
0970: 67 73 20 52 65 61 64 20 43 6f 75 6e 74 73 20 28  gs Read Counts (
0980: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0990: 29 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  )..#if DEBUG..  
09a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
09b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
09c0: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
09d0: 72 65 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  res the read cou
09e0: 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74  nts for the runt
09f0: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
0a00: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
0a10: 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69 6e 66  tings.  This inf
0a20: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0a30: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0a40: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0a50: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0a60: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0a70: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0a80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0a90: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0aa0: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0ab0: 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74 74 69  ring, int> setti
0ac0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 0d  ngReadCounts;...
0ad0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
0b30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0b40: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0b50: 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 72 65  ry stores the re
0b60: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68  ad counts for th
0b70: 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67  e runtime config
0b80: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
0b90: 2f 2f 20 73 65 74 74 69 6e 67 73 20 76 69 61 20  // settings via 
0ba0: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
0bb0: 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20 54 68 69  ation file.  Thi
0bc0: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0bd0: 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   only..      ///
0be0: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0bf0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 20 22  ompiled in the "
0c00: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0c10: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0c20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0c30: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0c40: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0c50: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0c60: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
0c70: 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ounts;..#endif..
0c80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0c90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ce0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0cf0: 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f 75 6e 74  gion Other Count
0d00: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0d10: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0d20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0d40: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
0d50: 73 74 6f 72 65 73 20 6d 69 73 63 65 6c 6c 61 6e  stores miscellan
0d60: 65 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64  eous counts used
0d70: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a   for debugging..
0d80: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
0d90: 65 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  es.  This inform
0da0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65  ation is only re
0db0: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0dc0: 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  iled in the..   
0dd0: 20 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62     /// "Debug" b
0de0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0df0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0e00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0e10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0e20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0e30: 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72 43 6f 75  g, int> otherCou
0e40: 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nts;..#endif..  
0e50: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0e60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0e70: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ec0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0ed0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
0ee0: 6f 64 73 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  ods..#if DEBUG..
0ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
0f10: 72 65 61 74 65 73 20 64 69 63 74 69 6f 6e 61 72  reates dictionar
0f20: 69 65 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72  ies used to stor
0f30: 65 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  e the read count
0f40: 73 20 66 6f 72 20 65 61 63 68 20 6f 66 0d 0a 20  s for each of.. 
0f50: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 75 6e       /// the run
0f60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
0f70: 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20 20 54 68  on settings.  Th
0f80: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
0f90: 75 73 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20  used for..      
0fa0: 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67 20 61 6e  /// debugging an
0fb0: 64 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  d testing purpos
0fc0: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
0fd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0fe0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
0ff0: 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  tic void Initial
1000: 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ize()..      {..
1010: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1020: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1030: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1040: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1060: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
1070: 65 20 64 69 63 74 69 6f 6e 61 72 69 65 73 20 6f  e dictionaries o
1080: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
1090: 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  t will..        
10a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
10b0: 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75 6d 62 65  ontain the numbe
10c0: 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20  r of times each 
10d0: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 0d 0a 20  setting value.. 
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10f0: 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20 72        has been r
1100: 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ead...          
1110: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1120: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1130: 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e  gReadCounts == n
1140: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1150: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
1160: 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  eadCounts = new 
1170: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1180: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20  g, int>();....  
1190: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11a0: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
11b0: 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ounts == null)..
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61    settingFileRea
11e0: 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69  dCounts = new Di
11f0: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1200: 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20   int>();....    
1210: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c  herCounts == nul
1230: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1240: 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75 6e 74        otherCount
1250: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1260: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1270: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
1280: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1290: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
1300: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61  crements the rea
1310: 64 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20  d count for the 
1320: 73 70 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d  specified runtim
1330: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
1340: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
1350: 6e 67 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65  ng.  These numbe
1360: 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  rs are used for 
1370: 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65  debugging and te
1380: 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a  sting purposes..
1390: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d        /// only..
13a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
13d0: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
13e0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
13f0: 73 65 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65  setting being re
1400: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
1410: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1420: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1430: 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20  viaFile">..     
1440: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
1450: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
1460: 65 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20  etting is being 
1470: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d  read from the XM
1480: 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
1490: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
14a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
14b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ram>..      publ
14c0: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
14d0: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
14e0: 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20  eadCount(..     
14f0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
1500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  ,..          boo
1510: 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20  l viaFile..     
1520: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
1530: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1540: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1550: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1580: 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73  / NOTE: Update s
1590: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
15a0: 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  is setting value
15b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15c0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15d0: 20 20 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d     if (viaFile).
15e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
15f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1600: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1610: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d  ileReadCounts !=
1620: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1630: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1650: 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d     int count;...
1660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1670: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1680: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1690: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
16a0: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
16d0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b  gFileReadCounts[
16e0: 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20  name] = count + 
16f0: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
1700: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1720: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1730: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e  gFileReadCounts.
1740: 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20  Add(name, 1);.. 
1750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1760: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1770: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1780: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1790: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17b0: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
17c0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17f0: 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74         int count
1800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1810: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1820: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1830: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
1840: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1860: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1870: 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65  gReadCounts[name
1880: 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a  ] = count + 1;..
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
18d0: 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65  dCounts.Add(name
18e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
18f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1900: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1910: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1920: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
1980: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1990: 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74     /// Increment
19a0: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
19b0: 63 6f 75 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  counter...      
19c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19e0: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
19f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
1a00: 65 20 6f 66 20 74 68 65 20 63 6f 75 6e 74 65 72  e of the counter
1a10: 20 62 65 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74   being increment
1a20: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
1a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1a40: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1a50: 64 20 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  d IncrementOther
1a60: 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  Count(..        
1a70: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20    string name.. 
1a80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1a90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1aa0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1ab0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ad0: 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74 73   if (otherCounts
1ae0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1af0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1b10: 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20  t count;....    
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1b30: 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 2e 54 72   (otherCounts.Tr
1b40: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1b50: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e     otherCounts[n
1b80: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
1b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ba0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc0: 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 41 64 64   otherCounts.Add
1bd0: 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20  (name, 1);..    
1be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c00: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1c10: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
1c20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64  ..#endif..  #end
1c30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
1c90: 72 65 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65  region Helper Me
1ca0: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
1cb0: 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ss..  /// <summa
1cc0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
1cd0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f  static class pro
1ce0: 76 69 64 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f  vides some metho
1cf0: 64 73 20 74 68 61 74 20 61 72 65 20 73 68 61 72  ds that are shar
1d00: 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0d 0a  ed between the..
1d10: 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62    /// native lib
1d20: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
1d30: 61 6e 64 20 6f 74 68 65 72 20 63 6c 61 73 73 65  and other classe
1d40: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
1d50: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
1d60: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 48 65   static class He
1d70: 6c 70 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  lperMethods..  {
1d80: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
1d90: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
1da0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1db0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
1dc0: 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74  s lock is used t
1dd0: 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 73 74  o protect the st
1de0: 61 74 69 63 20 3c 73 65 65 20 63 72 65 66 3d 22  atic <see cref="
1df0: 69 73 4d 6f 6e 6f 22 20 2f 3e 20 66 69 65 6c 64  isMono" /> field
1e00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1e10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
1e20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
1e30: 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74  adonly object st
1e40: 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e  aticSyncRoot = n
1e50: 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a  ew object();....
1e60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1ec0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1ed0: 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c  This type is onl
1ee0: 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72  y present when r
1ef0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
1f00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
1f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
1f20: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
1f30: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f  only string Mono
1f40: 52 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d  RuntimeType = "M
1f50: 6f 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d  ono.Runtime";...
1f60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
1f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1fc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1fd0: 20 4b 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20   Keeps track of 
1fe0: 77 68 65 74 68 65 72 20 77 65 20 61 72 65 20 72  whether we are r
1ff0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20  unning on Mono. 
2000: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
2010: 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f   it is..      //
2020: 2f 20 73 65 74 20 62 79 20 74 68 65 20 3c 73 65  / set by the <se
2030: 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20  e cref="IsMono" 
2040: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
2050: 20 66 69 72 73 74 20 63 61 6c 6c 2e 20 20 4c 61   first call.  La
2060: 74 65 72 2c 20 69 74 0d 0a 20 20 20 20 20 20 2f  ter, it..      /
2070: 2f 2f 20 69 73 20 72 65 74 75 72 6e 65 64 20 76  // is returned v
2080: 65 72 62 61 74 69 6d 20 62 79 20 74 68 65 20 3c  erbatim by the <
2090: 73 65 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f  see cref="IsMono
20a0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
20b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
20c0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
20d0: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 69  e static bool? i
20e0: 73 4d 6f 6e 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  sMono = null;.. 
20f0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2100: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2160: 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
2170: 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ods..      /// <
2180: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2190: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77  /// Determines w
21a0: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
21b0: 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72  is assembly is r
21c0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
21d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
21e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
21f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2200: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
2210: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  f this assembly 
2220: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  is running on Mo
2230: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
2240: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2250: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2260: 62 6f 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20  bool IsMono().. 
2270: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2280: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2290: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22a0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
22b0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
22c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22e0: 69 73 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d  isMono == null).
22f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2300: 20 20 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20         isMono = 
2310: 28 54 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f  (Type.GetType(Mo
2320: 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21  noRuntimeType) !
2330: 3d 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  = null);....    
2340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2350: 74 75 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e  turn (bool)isMon
2360: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
2370: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
2380: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
2390: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  h..          {..
23a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
23b0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
23c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
23e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lse;..      }.. 
23f0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2400: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
2460: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74  ion Internal Met
2470: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
2480: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2490: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
24a0: 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  if the current p
24b0: 72 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e  rocess is runnin
24c0: 67 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  g on one of the 
24d0: 57 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f  Windows..      /
24e0: 2f 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72  // [sub-]platfor
24f0: 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ms...      /// <
2500: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2510: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2520: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2530: 72 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  ro when running 
2540: 6f 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65  on Windows; othe
2550: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
2560: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2570: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
2580: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  al static bool I
2590: 73 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20  sWindows()..    
25a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50    {..          P
25b0: 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f  latformID platfo
25c0: 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  rmId = Environme
25d0: 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61  nt.OSVersion.Pla
25e0: 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20  tform;....      
25f0: 20 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72      if ((platfor
2600: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
2610: 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20  D.Win32S) ||..  
2620: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
2630: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
2640: 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f  ormID.Win32Windo
2650: 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ws) ||..        
2660: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
2670: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
2680: 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20  Win32NT) ||..   
2690: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
26a0: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
26b0: 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20  rmID.WinCE))..  
26c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26e0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
26f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2700: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
2710: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2770: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2780: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
2790: 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75  s a wrapper arou
27a0: 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  nd the..      //
27b0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  / <see cref="Str
27c0: 69 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d  ing.Format(IForm
27d0: 61 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e  atProvider,Strin
27e0: 67 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20  g,Object[])" /> 
27f0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
2800: 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68  // On Mono, it h
2810: 61 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d  as to call the m
2820: 65 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77  ethod overload w
2830: 69 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20  ithout the..    
2840: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
2850: 22 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72  "IFormatProvider
2860: 22 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20  " /> parameter, 
2870: 64 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20  due to a bug in 
2880: 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  Mono...      ///
2890: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28b0: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
28c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
28d0: 73 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75  s used for cultu
28e0: 72 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d  re-specific form
28f0: 61 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  atting...      /
2900: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2910: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2920: 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20  me="format">..  
2930: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
2940: 61 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  at string...    
2950: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2960: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2970: 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20   name="args">.. 
2980: 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61       /// An arra
2990: 79 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f  y the objects to
29a0: 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20   format...      
29b0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29c0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
29d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
29e0: 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e   resulting strin
29f0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
2a00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2a10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
2a20: 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72  string StringFor
2a30: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a40: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
2a50: 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20  provider,..     
2a60: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d       string form
2a70: 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70  at,..          p
2a80: 61 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61  arams object[] a
2a90: 72 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  rgs..          )
2aa0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
2ab0: 20 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28       if (IsMono(
2ac0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2ad0: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
2ae0: 46 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61  Format(format, a
2af0: 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rgs);..         
2b00: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2b10: 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
2b20: 6e 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64  ng.Format(provid
2b30: 65 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73  er, format, args
2b40: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
2b50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
2b60: 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e   }..  #endregion
2b70: 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
2b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
2bd0: 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79 20   Native Library 
2be0: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
2bf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c00: 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63   /// This static
2c10: 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20   class provides 
2c20: 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20 61  a thin wrapper a
2c30: 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76 65  round the native
2c40: 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20   library..  /// 
2c50: 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65 73  loading features
2c60: 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   of the underlyi
2c70: 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  ng platform...  
2c80: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2c90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2ca0: 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c 69  c class NativeLi
2cb0: 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b  braryHelper..  {
2cc0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2cd0: 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74 65  Private Delegate
2ce0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
2cf0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2d00: 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65 20  / This delegate 
2d10: 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70 20  is used to wrap 
2d20: 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c  the concept of l
2d30: 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65 0d  oading a native.
2d40: 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61  .      /// libra
2d50: 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20 66  ry, based on a f
2d60: 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65  ile name, and re
2d70: 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64  turning the load
2d80: 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  ed module..     
2d90: 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20   /// handle...  
2da0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2db0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2dc0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
2dd0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
2de0: 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f   The file name o
2df0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  f the native lib
2e00: 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20  rary to load... 
2e10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2e30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2e40: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
2e50: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
2e60: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
2e70: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
2e80: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
2e90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2ea0: 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67 61    private delega
2eb0: 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  te IntPtr LoadLi
2ec0: 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a  braryCallback(..
2ed0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2ee0: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
2ef0: 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72   );..      #endr
2f00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f60: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
2f70: 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  e Methods..     
2f80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f90: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
2fa0: 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73  ts to load the s
2fb0: 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
2fc0: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73 69  library file usi
2fd0: 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20 20  ng the Win32..  
2fe0: 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20      /// API...  
2ff0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3000: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
3010: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
3020: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
3030: 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f   The file name o
3040: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  f the native lib
3050: 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20  rary to load... 
3060: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3070: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3080: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
3090: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
30a0: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
30b0: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
30c0: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
30d0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
30e0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
30f0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3100: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
3110: 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20 20  aryWin32(..     
3120: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
3130: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
3140: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
3150: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
3160: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
3170: 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72  Win32.LoadLibrar
3180: 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20  y(fileName);..  
3190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
31a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
3200: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
3210: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3220: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
3230: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
3240: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
3250: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
3260: 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a 20  ing the POSIX.. 
3270: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
3280: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3290: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
32a0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
32b0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
32c0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
32d0: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
32e0: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
32f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3300: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
3310: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
3320: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
3330: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
3340: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
3350: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
3360: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
3370: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3390: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
33a0: 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20 20  raryPosix(..    
33b0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
33c0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
33d0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
33e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
33f0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
3400: 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d 0a  sPosix.dlopen(..
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
3420: 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e 61  leName, UnsafeNa
3430: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
3440: 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b 0d  .RTLD_DEFAULT);.
3450: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
3460: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
3470: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
34d0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65  region Public Me
34e0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  thods..      ///
34f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3500: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
3510: 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69  o load the speci
3520: 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72  fied native libr
3530: 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ary file...     
3540: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3550: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3560: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
3570: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
3580: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
3590: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
35a0: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
35b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
35d0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
35e0: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
35f0: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
3600: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
3610: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
3620: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
3630: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
3640: 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
3650: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28  Ptr LoadLibrary(
3660: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
3670: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
3680: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
3690: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f 61  {..          Loa
36a0: 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b  dLibraryCallback
36b0: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64   callback = Load
36c0: 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d  LibraryWin32;...
36d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
36e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
36f0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
3700: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73  HelperMethods.Is
3710: 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20  Windows())..    
3720: 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61            callba
3730: 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79  ck = LoadLibrary
3740: 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Posix;..#endif..
3750: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
3760: 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65  rn callback(file
3770: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  Name);..      }.
3780: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
3790: 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
37a0: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
3800: 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49  gion Unmanaged I
3810: 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53  nterop Methods S
3820: 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f 53  tatic Class (POS
3830: 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  IX)..#if !PLATFO
3840: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3850: 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ORK..  /// <summ
3860: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
3870: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
3880: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
3890: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
38a0: 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f  POSIX APIs...  /
38b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
38c0: 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61   [SuppressUnmana
38d0: 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d  gedCodeSecurity]
38e0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
38f0: 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65  tic class Unsafe
3900: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73  NativeMethodsPos
3910: 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ix..  {..      /
3920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3970: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3980: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
3990: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
39a0: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
39b0: 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20  the native Unix 
39c0: 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f  dlopen..      //
39d0: 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65  / function.  See
39e0: 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d   the POSIX docum
39f0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c  entation for ful
3a00: 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61  l details on wha
3a10: 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t it..      /// 
3a20: 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  does...      ///
3a30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3a40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3a50: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
3a60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
3a70: 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75 74  me of the execut
3a80: 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  able library... 
3a90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3aa0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
3ab0: 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e  ram name="mode">
3ac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
3ad0: 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62 69   must be a combi
3ae0: 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e  nation of the in
3af0: 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c 61  dividual bit fla
3b00: 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20  gs RTLD_LAZY,.. 
3b10: 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f       /// RTLD_NO
3b20: 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20  W, RTLD_GLOBAL, 
3b30: 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43 41  and/or RTLD_LOCA
3b40: 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  L...      /// </
3b50: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
3b60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
3b70: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
3b80: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
3b90: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
3ba0: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
3bb0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
3bc0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3bd0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
3be0: 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 20  t("__Internal", 
3bf0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c  EntryPoint = "dl
3c00: 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20  open",..        
3c10: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
3c20: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
3c30: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
3c40: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
3c50: 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20  .Ansi,..        
3c60: 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67    BestFitMapping
3c70: 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f   = false, ThrowO
3c80: 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20  nUnmappableChar 
3c90: 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20  = true,..       
3ca0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
3cb0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
3cc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3cd0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c  extern IntPtr dl
3ce0: 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65  open(string file
3cf0: 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b  Name, int mode);
3d00: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d50: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3d60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3d70: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
3d80: 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20   dlopen(), bind 
3d90: 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c  function calls l
3da0: 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  azily...      //
3db0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3dc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
3dd0: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59  st int RTLD_LAZY
3de0: 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20   = 0x1;....     
3df0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
3e40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3e50: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75  .      /// For u
3e60: 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29  se with dlopen()
3e70: 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20  , bind function 
3e80: 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c  calls immediatel
3e90: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
3ea0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3eb0: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69  internal const i
3ec0: 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78  nt RTLD_NOW = 0x
3ed0: 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  2;....      ////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f20: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3f30: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3f40: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
3f50: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b  th dlopen(), mak
3f60: 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c  e symbols global
3f70: 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ly available... 
3f80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3f90: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
3fa0: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
3fb0: 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30  LD_GLOBAL = 0x10
3fc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  0;....      ////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4010: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4020: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4030: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
4040: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70  th dlopen(), opp
4050: 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c  osite of RTLD_GL
4060: 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65  OBAL, and the de
4070: 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  fault...      //
4080: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4090: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
40a0: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41  st int RTLD_LOCA
40b0: 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20  L = 0x000;....  
40c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
40d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4110: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4120: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
4130: 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65  r use with dlope
4140: 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74  n(), the default
4150: 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20 63  s used by this c
4160: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lass...      ///
4170: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4180: 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f 6e     internal  con
4190: 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46 41  st int RTLD_DEFA
41a0: 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c  ULT = RTLD_NOW |
41b0: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20   RTLD_GLOBAL;.. 
41c0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65   }..#endif..  #e
41d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
41e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
4230: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
4240: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
4250: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
4260: 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c  (Win32)..  /// <
4270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
4280: 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61  This class decla
4290: 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  res P/Invoke met
42a0: 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74  hods to call nat
42b0: 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e 0d  ive Win32 APIs..
42c0: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
42d0: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
42e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
42f0: 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  K..  [SuppressUn
4300: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
4310: 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ity]..#endif..  
4320: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4330: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
4340: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a  veMethodsWin32..
4350: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f    {..      /////
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43a0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
43b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
43c0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
43d0: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
43e0: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
43f0: 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f 61  native Win32 Loa
4400: 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20 20  dLibrary..      
4410: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
4420: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
4430: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
4440: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
4450: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
4460: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
4470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4480: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4490: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
44a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
44b0: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
44c0: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
44d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
44e0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
44f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4500: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
4510: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
4520: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
4530: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
4540: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
4550: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66   </returns>..#if
4560: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4570: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4580: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b     [DllImport("k
4590: 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65  ernel32",..#else
45a0: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
45b0: 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23  rt("coredll",..#
45c0: 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43  endif.. CallingC
45d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
45e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
45f0: 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20  napi, CharSet = 
4600: 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23  CharSet.Auto,..#
4610: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4620: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4630: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
4640: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
4650: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
4660: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
4670: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4680: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
4690: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69   true)]..      i
46a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
46b0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61  xtern IntPtr Loa
46c0: 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20  dLibrary(string 
46d0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
46e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
46f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
4730: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
4740: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
4750: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
4760: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
4770: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
4780: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
4790: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
47a0: 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d   Win32 GetSystem
47b0: 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Info..      /// 
47c0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
47d0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
47e0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
47f0: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
4800: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
4810: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
4820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4840: 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20  "systemInfo">.. 
4850: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73       /// The sys
4860: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
4870: 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
4880: 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65  filled in by the
4890: 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
48a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
48b0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
48c0: 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c  ("coredll", Call
48d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
48e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
48f0: 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20  n.Winapi)]..    
4900: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4910: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65  c extern void Ge
4920: 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20  tSystemInfo(out 
4930: 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74  SYSTEM_INFO syst
4940: 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
4950: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
49a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
49b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
49c0: 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e   enumeration con
49d0: 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62  tains the possib
49e0: 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  le values for th
49f0: 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
4a00: 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
4a10: 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65  ure field of the
4a20: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
4a30: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ion structure...
4a40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4a50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
4a60: 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73  rnal enum Proces
4a70: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
4a80: 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50  : ushort /* COMP
4a90: 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20  AT: Win32. */.. 
4aa0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4ab0: 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20    Intel = 0,..  
4ac0: 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31          MIPS = 1
4ad0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70  ,..          Alp
4ae0: 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20  ha = 2,..       
4af0: 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d     PowerPC = 3,.
4b00: 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d  .          SHx =
4b10: 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   4,..          A
4b20: 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20  RM = 5,..       
4b30: 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20     IA64 = 6,..  
4b40: 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20          Alpha64 
4b50: 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 7,..          
4b60: 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20  MSIL = 8,..     
4b70: 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d       AMD64 = 9,.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f  .          IA32_
4b90: 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a  on_Win64 = 10,..
4ba0: 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77            Unknow
4bb0: 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20  n = 0xFFFF..    
4bc0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
4c20: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4c30: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
4c40: 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69  cture contains i
4c50: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
4c60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d   the current com
4c70: 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20  puter. This..   
4c80: 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20     /// includes 
4c90: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79  the processor ty
4ca0: 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d  pe, page size, m
4cb0: 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c  emory addresses,
4cc0: 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   etc...      ///
4cd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ce0: 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
4cf0: 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
4d00: 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20  ential)]..      
4d10: 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
4d20: 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20  SYSTEM_INFO..   
4d30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4d40: 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72  public Processor
4d50: 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72  Architecture wPr
4d60: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
4d70: 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ure;..          
4d80: 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52  public ushort wR
4d90: 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20  eserved; /* NOT 
4da0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
4db0: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
4dc0: 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f  wPageSize; /* NO
4dd0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
4de0: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
4df0: 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c  tr lpMinimumAppl
4e00: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
4e10: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
4e20: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4e30: 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75   IntPtr lpMaximu
4e40: 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72  mApplicationAddr
4e50: 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ess; /* NOT USED
4e60: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
4e70: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74  ublic uint dwAct
4e80: 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b  iveProcessorMask
4e90: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
4ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
4eb0: 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72  ic uint dwNumber
4ec0: 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a  OfProcessors; /*
4ed0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
4ee0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
4ef0: 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54  int dwProcessorT
4f00: 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ype; /* NOT USED
4f10: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
4f20: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c  ublic uint dwAll
4f30: 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69  ocationGranulari
4f40: 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ty; /* NOT USED 
4f50: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
4f60: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f  blic ushort wPro
4f70: 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20  cessorLevel; /* 
4f80: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
4f90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
4fa0: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52  hort wProcessorR
4fb0: 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20  evision; /* NOT 
4fc0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  USED */..      }
4fd0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20  ..#endif..  }.. 
4fe0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4ff0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5040: 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61  ..  #region Unma
5050: 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65  naged Interop Me
5060: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
5070: 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f  ss (SQLite)..  /
5080: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5090: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64  /// This class d
50a0: 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65  eclares P/Invoke
50b0: 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c   methods to call
50c0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 41   native SQLite A
50d0: 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  PIs...  /// </su
50e0: 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41  mmary>..#if !PLA
50f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5100: 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72  MEWORK..  [Suppr
5110: 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65  essUnmanagedCode
5120: 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69  Security]..#endi
5130: 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  f..  internal st
5140: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
5150: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a  eNativeMethods..
5160: 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69    {..      #regi
5170: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
5180: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
5190: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
51a0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
51b0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
51c0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
51d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
51e0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
51f0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
5200: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
5210: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
5220: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5230: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5240: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
5250: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
5260: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
5270: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
52c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
52d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
52e0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
52f0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
5300: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
5310: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
5320: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5330: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
5340: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
5350: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
5360: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
5370: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
5380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
53d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
53e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
53f0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
5400: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
5410: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
5420: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
5430: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
5440: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
5450: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5470: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
5480: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
5490: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
54a0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
54b0: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
54c0: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
54d0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
54e0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
54f0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
5500: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
5560: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5570: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
5580: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
5590: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
55a0: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
55b0: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
55c0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
55d0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
55e0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
55f0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
5600: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
5610: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
5620: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5630: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
5640: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
5650: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
5660: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
5670: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
5680: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
5690: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
56a0: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
56b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
56c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5710: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
5720: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
5730: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
5740: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
5750: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
5760: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
5770: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5780: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
5790: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
57a0: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
57b0: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
57c0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
57d0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
57e0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
57f0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
5800: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
5810: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5820: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5830: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
5840: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
5850: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
5860: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
5870: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
5880: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
5890: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
58f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5900: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
5910: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
5920: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
5930: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
5940: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
5950: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
5960: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
5970: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
5980: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
5990: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
59a0: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
59b0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
59c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
59d0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
59e0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
59f0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
5a00: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
5a10: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
5a20: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
5a30: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
5a40: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
5a50: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
5ab0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
5ac0: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
5ad0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5ae0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
5af0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
5b00: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
5b10: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
5b20: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
5b30: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
5b40: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
5b50: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
5b60: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
5b70: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
5b80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5b90: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5ba0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
5bb0: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
5bc0: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
5bd0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
5be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
5c30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5c40: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
5c50: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
5c60: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
5c70: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
5c80: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
5c90: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
5ca0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
5cb0: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
5cc0: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
5cd0: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
5ce0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
5cf0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
5d00: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
5d10: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
5d20: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
5d30: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
5d40: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
5d50: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
5d60: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
5d70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
5d80: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
5d90: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
5da0: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
5db0: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
5dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
5dd0: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
5de0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
5df0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
5e00: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
5e10: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
5e20: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
5e30: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
5e40: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
5e50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5e60: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5e70: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
5e80: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
5e90: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5ea0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
5eb0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5f10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5f20: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
5f30: 63 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61  cached return va
5f40: 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  lue from the..  
5f50: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
5f60: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
5f70: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
5f80: 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  od -OR- null if 
5f90: 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20  that method..   
5fa0: 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72     /// has never
5fb0: 20 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69   returned a vali
5fc0: 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  d value...      
5fd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5fe0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
5ff0: 61 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68  atic string cach
6000: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
6010: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ory;....      //
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6060: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6070: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6080: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
6090: 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a  s field is non-z
60a0: 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65  ero, it indicate
60b0: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s the..      ///
60c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
60d0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
60e0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
60f0: 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61  not able to loca
6100: 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  te a..      /// 
6110: 73 75 69 74 61 62 6c 65 20 61 73 73 65 6d 62 6c  suitable assembl
6120: 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  y directory.  Th
6130: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
6140: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
6150: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
6160: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
6170: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
6180: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
6190: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
61a0: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
61b0: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
61c0: 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a 20 20 20  rectory" />..   
61d0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
61e0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
61f0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
6200: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6210: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
6220: 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73 65 6d 62  ic bool noAssemb
6230: 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
6240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6290: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
62a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
62b0: 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68  This is the cach
62c0: 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ed return value 
62d0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
62e0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
62f0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
6300: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ame" /> method -
6310: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74  OR- null if that
6320: 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f   method..      /
6330: 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74  // has never ret
6340: 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61  urned a valid va
6350: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
6360: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6370: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
6380: 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 58 6d   string cachedXm
6390: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b  lConfigFileName;
63a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63f0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
6400: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6410: 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69  /// When this fi
6420: 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eld is non-zero,
6430: 20 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68   it indicates th
6440: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
6450: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
6460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
6470: 20 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20   method was not 
6480: 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61  able to locate a
6490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74  ..      /// suit
64a0: 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75  able XML configu
64b0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
64c0: 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
64d0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
64e0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
64f0: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
6500: 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68  od will check th
6510: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69  is..      /// fi
6520: 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61  eld and skips ca
6530: 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65  lls into the <se
6540: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
6550: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
6560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
6570: 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20 69  od whenever it i
6580: 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  s non-zero...   
6590: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
65a0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
65b0: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 58   static bool noX
65c0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
65d0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
65e0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6640: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6650: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
6660: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
6670: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
6680: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
6690: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
66a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
66b0: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
66c0: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
66d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
66e0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
66f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6740: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6750: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6760: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
6770: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
6780: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
6790: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
67a0: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
67b0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
67c0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
67d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
67e0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
67f0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
6800: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6810: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6820: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
6830: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  e()..      {..#i
6840: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
6850: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
6860: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
6870: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6880: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
6890: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
68a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
68b0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
68c0: 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f  If the "No_PreLo
68d0: 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f  adSQLite" enviro
68e0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
68f0: 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20  s set (to..     
6900: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
6910: 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c  ything), skip al
6920: 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f  l our special co
6930: 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65  de and simply re
6940: 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  turn...         
6950: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
6960: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
6970: 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  ue("No_PreLoadSQ
6980: 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  Lite", null) != 
6990: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
69a0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
69b0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
69c0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
69d0: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
69e0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
69f0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6a00: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6a10: 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 73  Create the lists
6a20: 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 74   of statistics t
6a30: 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  hat will contain
6a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6a50: 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75       various cou
6a60: 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62 75  nts used in debu
6a70: 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  gging, including
6a80: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
6a90: 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20  //       number 
6aa0: 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65  of times each se
6ab0: 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20  tting value has 
6ac0: 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20  been read...    
6ad0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6ae0: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
6af0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e  itialize();..#en
6b00: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
6b10: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6b20: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
6b30: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
6b40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6b50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6b60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f             // TO
6b70: 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  DO: Make sure th
6b80: 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74  is list is updat
6b90: 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72  ed if the suppor
6ba0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
6bb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
6bc0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
6bd0: 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20  re names and/or 
6be0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a  platform names..
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6c00: 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d         changes..
6c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
6c20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6c30: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
6c40: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
6c50: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c80: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6c90: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6ca0: 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f  Create the map o
6cb0: 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  f processor arch
6cc0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a  itecture names..
6cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ce0: 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c    //       to pl
6cf0: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69  atform names usi
6d00: 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73  ng a case-insens
6d10: 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20  itive string..  
6d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d30: 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65  //       compare
6d40: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
6d50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6d60: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
6d70: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
6d80: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20  ePlatforms =..  
6d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6da0: 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61      new Dictiona
6db0: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
6dc0: 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g>(..           
6dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
6de0: 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72  tringComparer.Or
6df0: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
6e00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6e10: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6e30: 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20  NOTE: Setup the 
6e40: 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d  list of platform
6e50: 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65   names associate
6e60: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
6e70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6e80: 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64     the supported
6e90: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
6ea0: 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20  tectures...     
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
6ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ed0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
6ee0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
6ef0: 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69  s.Add("x86", "Wi
6f00: 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  n32");..        
6f10: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
6f20: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
6f30: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d  latforms.Add("AM
6f40: 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20  D64", "x64");.. 
6f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6f70: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
6f80: 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61  Add("IA64", "Ita
6f90: 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  nium");..       
6fa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
6fb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
6fc0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
6fd0: 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a  RM", "WinCE");..
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
6ff0: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
7000: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
7010: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
7020: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7030: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
7040: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
7050: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RY..            
7060: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7070: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
7080: 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20  hat about other 
7090: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
70a0: 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ins?..          
70b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
70c0: 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74        if (_SQLit
70d0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
70e0: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
70f0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
7100: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7110: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
7120: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  aseDirectory = n
7130: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
7140: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
7150: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7160: 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ture = null;....
7170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7180: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
7190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71a0: 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65     SearchForDire
71b0: 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  ctory(..        
71c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
71d0: 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  f baseDirectory,
71e0: 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72   ref processorAr
71f0: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7220: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
7230: 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d   Attempt to pre-
7240: 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20  load the SQLite 
7250: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72  core library (or
7260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7270: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74      //       int
7280: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61  erop assembly) a
7290: 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68  nd store both th
72a0: 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20  e file name..   
72b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
72c0: 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69  /       and nati
72d0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
72e0: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65   for later usage
72f0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7300: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7310: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47             /* IG
7320: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
7330: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c              PreL
7340: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
7350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7360: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
7370: 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
7380: 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73a0: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
73b0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
73c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
73d0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
73e0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
73f0: 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20  eHandle);..     
7400: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
7410: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
7420: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
7430: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
7490: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
74a0: 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f  /// Combines two
74b0: 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a   path strings...
74c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
74d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
74e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
74f0: 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h1">..      /// 
7500: 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d  The first path -
7510: 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  OR- null...     
7520: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7530: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7540: 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20  name="path2">.. 
7550: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63       /// The sec
7560: 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75  ond path -OR- nu
7570: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
7580: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
7590: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
75a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62      /// The comb
75b0: 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67  ined path string
75c0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f   -OR- null if bo
75d0: 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  th of the origin
75e0: 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f  al path..      /
75f0: 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e  // strings are n
7600: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
7610: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7620: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7630: 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d   string MaybeCom
7640: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
7650: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
7660: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  1,..          st
7670: 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20  ring path2..    
7680: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
7690: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
76a0: 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path1 != null)..
76b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
76c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
76d0: 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath2 != null).. 
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76f0: 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d   return Path.Com
7700: 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68  bine(path1, path
7710: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
7720: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
7730: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7740: 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20  n path1;..      
7750: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7760: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
7770: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7780: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
7790: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
77a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
77b0: 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20  ath2;..         
77c0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
77e0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
77f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
7800: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
7860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7870: 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61  // Resets the ca
7880: 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ched XML configu
7890: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
78a0: 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72   value, thus for
78b0: 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  cing the..      
78c0: 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f  /// next call to
78d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43   <see cref="GetC
78e0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
78f0: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
7900: 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20  d to rely..     
7910: 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73   /// upon the <s
7920: 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43  ee cref="GetXmlC
7930: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
7940: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63  > method to fetc
7950: 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  h the..      ///
7960: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
7970: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  on file name... 
7980: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7990: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
79a0: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
79b0: 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  esetCachedXmlCon
79c0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20  figFileName().. 
79d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
79e0: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
79f0: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
7a00: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
7a10: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
7a20: 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
7a30: 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
7a40: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
7a50: 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ame");..#endif..
7a60: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7a70: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7a80: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
7a90: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
7aa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7ab0: 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e      cachedXmlCon
7ac0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  figFileName = nu
7ad0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
7ae0: 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69     noXmlConfigFi
7af0: 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d  leName = false;.
7b00: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
7b10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
7b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b60: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
7b70: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7b80: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
7b90: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
7ba0: 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66   cached XML conf
7bb0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
7bc0: 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20  ame for the..   
7bd0: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
7be0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d  containing the m
7bf0: 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61  anaged System.Da
7c00: 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e  ta.SQLite compon
7c10: 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20  ents, if..      
7c20: 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20  /// available.  
7c30: 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58 4d  If the cached XM
7c40: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
7c50: 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20  file name value 
7c60: 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  is not..      //
7c70: 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65  / available, the
7c80: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58   <see cref="GetX
7c90: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
7ca0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
7cb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75  ..      /// be u
7cc0: 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68  sed to obtain th
7cd0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
7ce0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
7cf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7d00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7d10: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
7d20: 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e   /// The XML con
7d30: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
7d40: 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  name -OR- null i
7d50: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
7d60: 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20  etermined..     
7d70: 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74   /// or does not
7d80: 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f   exist...      /
7d90: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
7da0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
7db0: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61  tic string GetCa
7dc0: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
7dd0: 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b  eName()..      {
7de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
7df0: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
7e00: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
7e10: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
7e20: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
7e30: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
7e40: 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  _GetCachedXmlCon
7e50: 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a  figFileName");..
7e60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7e70: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7e80: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
7e90: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
7ea0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7eb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7ec0: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
7ed0: 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  ileName != null)
7ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ef0: 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65      return cache
7f00: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
7f10: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
7f20: 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f       if (noXmlCo
7f30: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20  nfigFileName).. 
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f50: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7f60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7f70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
7f80: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
7f90: 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ame();..      }.
7fa0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ff0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
8000: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8010: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
8020: 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63  eturns the XML c
8030: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
8040: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61  e name for the a
8050: 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f  ssembly..      /
8060: 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  // containing th
8070: 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d  e managed System
8080: 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d  .Data.SQLite com
8090: 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20  ponents...      
80a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
80b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
80c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
80d0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
80e0: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d  tion file name -
80f0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
8100: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
8110: 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ned..      /// o
8120: 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  r does not exist
8130: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
8140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
8150: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8160: 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69  ring GetXmlConfi
8170: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
8180: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8190: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
81a0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
81b0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
81c0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
81d0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
81e0: 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69  thod_GetXmlConfi
81f0: 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65  gFileName");..#e
8200: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8210: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8220: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
8230: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
8240: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
8250: 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Name;....#if !PL
8260: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8270: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
8280: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41     directory = A
8290: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
82a0: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
82b0: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
82c0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62   fileName = Mayb
82d0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
82e0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
82f0: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
8300: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
8310: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
8320: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
8330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8340: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
8350: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
8360: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8370: 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64            cached
8380: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
8390: 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  e = fileName;.. 
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
83b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83c0: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
83d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
83e0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
83f0: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
8400: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
8410: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20  Directory();..  
8420: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
8430: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
8440: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
8450: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
8460: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
8470: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
8480: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
8490: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
84a0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
84b0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
84c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67   cachedXmlConfig
84f0: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e  FileName = fileN
8500: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
8510: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8520: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
8530: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
8540: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8550: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
8560: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
8570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8580: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
8590: 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d  ileName = true;.
85a0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
85b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
85c0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
85d0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
85e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
8630: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8640: 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
8650: 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
8660: 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f  supported XML co
8670: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8680: 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f   tokens..      /
8690: 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73  // with their as
86a0: 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e  sociated values.
86b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
86c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
86d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
86e0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
86f0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
8700: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
8710: 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e  ration file bein
8720: 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  g read...      /
8730: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8740: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8750: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
8760: 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67     /// A setting
8770: 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d   value read from
8780: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
8790: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
87a0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
87b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
87c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
87d0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
87e0: 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  e <paramref name
87f0: 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c  ="value" /> will
8800: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
8810: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
8820: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8830: 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64   tokens replaced
8840: 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c  .  No return val
8850: 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a  ue is reserved..
8860: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64        /// to ind
8870: 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20  icate an error. 
8880: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e   This method can
8890: 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20  not fail...     
88a0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
88b0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
88c0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70  tatic string Rep
88d0: 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  laceXmlConfigFil
88e0: 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20  eTokens(..      
88f0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
8900: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8910: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
8920: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
8930: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
8940: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
8950: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
8960: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
8970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8980: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
8990: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
89a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
89b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
89c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89f0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
8a00: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
8a10: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
8a20: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
8a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a40: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
8a50: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
8a60: 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
8a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a90: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
8aa0: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
8ab0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ad0: 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63    XmlConfigDirec
8ae0: 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
8af0: 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8b20: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
8b30: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
8b40: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
8b60: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
8b70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8b80: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
8b90: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
8ba0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8bb0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8bc0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8bd0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
8be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bf0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
8c30: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
8c40: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
8c50: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
8c80: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
8c90: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
8ca0: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
8cd0: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
8ce0: 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20  place XML " +.. 
8cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f               "co
8d10: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8d20: 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a   \"{0}\" tokens:
8d30: 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d50: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
8d60: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
8d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d80: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8da0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8dd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
8de0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
8df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e00: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
8e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
8e40: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8e50: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
8e60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8eb0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
8ec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8ed0: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
8ee0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
8ef0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
8f00: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
8f10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
8f20: 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d  /// specified XM
8f30: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
8f40: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
8f50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8f60: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8f70: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
8f80: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
8f90: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
8fa0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8fb0: 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   to read...     
8fc0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8fd0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8fe0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
8ff0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
9000: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
9010: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
9020: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
9030: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
9040: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
9050: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
9060: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
9070: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
9080: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
9090: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
90a0: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
90b0: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
90c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
90d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
90e0: 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a  name="expand">..
90f0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
9100: 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79  ro to expand any
9110: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
9120: 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73  iable references
9130: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20   contained in.. 
9140: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74       /// the set
9150: 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65  ting value to be
9160: 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73   returned.  This
9170: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
9180: 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
9190: 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72    /// Compact Fr
91a0: 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20  amework...      
91b0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
91c0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
91d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
91e0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
91f0: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
9200: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
9210: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
9220: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
9230: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
9240: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
9250: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
9260: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
9270: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
9280: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
9290: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
92a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
92b0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
92c0: 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
92d0: 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
92e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
92f0: 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  eName, /* in */.
9300: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9310: 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69  g name,     /* i
9320: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
9330: 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c  string @default,
9340: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
9350: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
9360: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
9370: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
9380: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9390: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
93a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
93b0: 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d  if ((fileName ==
93c0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20   null) || (name 
93d0: 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
93e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
93f0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
9400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
9410: 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d  mlDocument docum
9420: 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63  ent = new XmlDoc
9430: 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ument();....    
9440: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
9450: 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65  nt.Load(fileName
9460: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
9470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9480: 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  XmlElement eleme
9490: 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65  nt = document.Se
94a0: 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d  lectSingleNode(.
94b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
94c0: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
94d0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
94e0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
94f0: 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
9500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
9510: 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61  /configuration/a
9520: 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40  ppSettings/add[@
9530: 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d  key='{0}']", nam
9540: 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20  e)) as..        
9550: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
9560: 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ment; /* throw *
9570: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
9580: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21     if (element !
9590: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
95a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
95b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
95c0: 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b  ng value = null;
95d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
95e0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
95f0: 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22  t.HasAttribute("
9600: 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20  value"))..      
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9620: 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e  value = element.
9630: 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61  GetAttribute("va
9640: 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lue");....      
9650: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9660: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
9670: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9690: 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
96a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
96b0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
96c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
96d0: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
9700: 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72  ment.ExpandEnvir
9710: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28  onmentVariables(
9720: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9740: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
9750: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
9760: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
9770: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9790: 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
97a0: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
97b0: 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20  okens(fileName, 
97c0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
97d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97f0: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
9800: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9810: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9820: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
9830: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9840: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
9850: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
9860: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
9870: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
9880: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
9890: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
98a0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
98b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
98c0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
98d0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
98e0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
98f0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9900: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9920: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
9930: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
9940: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9960: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
9970: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
9980: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
9990: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
99a0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
99b0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
99c0: 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b   get setting \"{
99d0: 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a  0}\" value " +..
99e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99f0: 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20        "from XML 
9a00: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
9a10: 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22  le \"{1}\": {2}"
9a20: 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  , name,..       
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
9a40: 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ileName, e)); /*
9a50: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
9a60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9a70: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
9a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
9a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9aa0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
9ab0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
9ac0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
9ad0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9ae0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
9af0: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  fault;..      }.
9b00: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b50: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
9b60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9b70: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
9b80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9b90: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
9ba0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
9bb0: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
9bc0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
9bd0: 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f  that is..      /
9be0: 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
9bf0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9c00: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
9c10: 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  y, if applicable
9c20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9c30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9c40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9c50: 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20  assembly">..    
9c60: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
9c70: 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65  d assembly to re
9c80: 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66 72  ad the target fr
9c90: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
9ca0: 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  e value..      /
9cb0: 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  // from...      
9cc0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
9cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
9ce0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
9cf0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61   value of the ta
9d00: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
9d10: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 66  ttribute value f
9d20: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
9d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61  ..      /// mana
9d40: 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52  ged assembly -OR
9d50: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
9d60: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
9d70: 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20  d.  If this..   
9d80: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
9d90: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
9da0: 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  h a version of t
9db0: 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
9dc0: 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  k prior to..    
9dd0: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e    /// version 4.
9de0: 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  0, the value ret
9df0: 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63  urned MAY reflec
9e00: 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f  t that version o
9e10: 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  f the .NET..    
9e20: 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20    /// Framework 
9e30: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f  instead of the o
9e40: 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ne associated wi
9e50: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9e60: 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20   managed..      
9e70: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  /// assembly... 
9e80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9e90: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
9ea0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
9eb0: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
9ec0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
9ed0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
9ee0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
9ef0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
9f10: 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
9f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
9f30: 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54  if NET_40 || NET
9f40: 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c  _45 || NET_451 |
9f50: 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54  | NET_452 || NET
9f60: 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c  _46 || NET_461 |
9f70: 7c 20 4e 45 54 5f 34 36 32 0d 0a 20 20 20 20 20  | NET_462..     
9f80: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fb0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
9fc0: 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
9ff0: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
a000: 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a020: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a030: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
a040: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
a050: 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  te targetFramewo
a060: 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  rk =..          
a070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a080: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
a090: 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20  Attribute)..    
a0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0b0: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47        assembly.G
a0c0: 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74  etCustomAttribut
a0d0: 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
a0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0f0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
a100: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
a110: 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d  te), false)[0];.
a120: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a140: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e  targetFramework.
a150: 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a  FrameworkName;..
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a170: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
a180: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
a190: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
a1a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a1c0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
a1d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
a1e0: 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20  elif NET_35..   
a1f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a200: 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
a210: 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d  ,Version=v3.5";.
a220: 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20  .#elif NET_20.. 
a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a240: 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f  urn ".NETFramewo
a250: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22  rk,Version=v2.0"
a260: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
a270: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a280: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
a290: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
a2a0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a2f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a300: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
a310: 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61  ccepts a long ta
a320: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
a330: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61  ttribute value a
a340: 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f  nd makes it into
a350: 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75   a..      /// mu
a360: 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69  ch shorter versi
a370: 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72  on, suitable for
a380: 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20   use with NuGet 
a390: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20  packages...     
a3a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a3b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
a3c0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
a3d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c  .      /// The l
a3e0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
a3f0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
a400: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
a410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a420: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
a430: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
a440: 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74   /// The short t
a450: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
a460: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
a470: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
a480: 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  cannot..      //
a490: 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  / be determined 
a4a0: 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20  or converted... 
a4b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
a4c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
a4d0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
a4e0: 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
a4f0: 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
a500: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
a510: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
a520: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
a530: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
a540: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
a550: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
a560: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
a570: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a580: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
a590: 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65  place(".NETFrame
a5a0: 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
a5b0: 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20   "net");..      
a5c0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
a5d0: 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53  e.Replace(".", S
a5e0: 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d  tring.Empty);...
a5f0: 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69  .          int i
a600: 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64  ndex = value.Ind
a610: 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20  exOf(',');....  
a620: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
a630: 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
a640: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
a650: 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28  value.Substring(
a660: 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  0, index);....  
a670: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
a680: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
a690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
a6f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a700: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
a710: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
a720: 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e  upported environ
a730: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
a740: 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  kens..      /// 
a750: 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63  with their assoc
a760: 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  iated values... 
a770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a780: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
a790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
a7a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
a7b0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
a7c0: 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69  ead from an envi
a7d0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
a7e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
a7f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
a800: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
a810: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
a820: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
a830: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
a840: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
a850: 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ted..      /// e
a860: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
a870: 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61  ble tokens repla
a880: 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20  ced.  No return 
a890: 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65  value is reserve
a8a0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  d..      /// to 
a8b0: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f  indicate an erro
a8c0: 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  r.  This method 
a8d0: 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20  cannot fail...  
a8e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
a8f0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
a900: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
a910: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
a920: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
a930: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
a940: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
a950: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
a960: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
a970: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
a980: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
a990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a9a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
a9b0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43  directory = GetC
a9c0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
a9d0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
a9e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
a9f0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
aa00: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
aa10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
aa30: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa60: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
aa70: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44         AssemblyD
aaa0: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
aab0: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
aad0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
aae0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
aaf0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
ab00: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
ab10: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
ab20: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
ab30: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
ab40: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
ab50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab60: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
ab70: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ab80: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abd0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
abe0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
abf0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
ac00: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac20: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
ac30: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
ac40: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
ac50: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
ac80: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
ac90: 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20   assembly " +.. 
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 69               "di
acc0: 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b  rectory token: {
acd0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
ace0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
acf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ad40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad50: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad70: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
ad80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ada0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
adb0: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
adc0: 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b  assembly = null;
add0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ade0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
adf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ae00: 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
ae10: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
ae20: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
ae30: 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ly();..         
ae40: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
ae50: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
ae60: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
ae70: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ae80: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
ae90: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
aea0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
aeb0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
aed0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
aee0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
aef0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
af00: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
af20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af30: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
af40: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
af50: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
af60: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
af70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
af80: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
af90: 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69  ntCulture, "Nati
afa0: 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a  ve library " +..
afb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
afc0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
afd0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
afe0: 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67  obtain executing
aff0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
b000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b010: 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c  "assembly: {0}",
b020: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
b030: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
b040: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b050: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
b060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b070: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
b090: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
b0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
b0b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b0c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b0d0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
b0e0: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
b0f0: 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61 72   = AbbreviateTar
b100: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
b110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b120: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
b130: 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65  etFramework(asse
b140: 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly));....     
b150: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
b160: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
b170: 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f  ty(targetFramewo
b180: 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rk))..          
b190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b1a0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b1d0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
b1e0: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d   value.Replace(.
b1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b200: 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
b210: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c  tFrameworkToken,
b220: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
b230: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b240: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
b250: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
b260: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b280: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
b290: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
b2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
b2b0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
b2c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b2d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
b2e0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
b2f0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
b300: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
b310: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b330: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b350: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
b360: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
b370: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
b380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b390: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
b3a0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
b3b0: 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
b3c0: 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3e0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
b3f0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
b400: 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74 20   replace target 
b410: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f     "framework to
b440: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
b450: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b480: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
b490: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
b4a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4c0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
b4d0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
b4f0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
b500: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
b510: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b520: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b530: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
b540: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  ue;..      }..#e
b550: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
b5b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b5c0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
b5d0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
b5e0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
b5f0: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
b600: 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20  using the XML.. 
b610: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
b620: 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f  ration file and/
b630: 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  or the environme
b640: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72  nt variables for
b650: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
b660: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20      /// process 
b670: 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65  and/or the curre
b680: 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20  nt system, when 
b690: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
b6a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b6b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
b6c0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
b6d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
b6e0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
b6f0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
b700: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
b710: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b720: 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20  default">..     
b730: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
b740: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  o be returned if
b750: 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73   the setting has
b760: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
b770: 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20  plicitly..      
b780: 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65  /// or cannot be
b790: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
b7a0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b7b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
b7c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
b7d0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
b7e0: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
b7f0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
b800: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
b810: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
b820: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
b830: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
b840: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
b850: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
b860: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
b870: 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64  etermined.  By d
b880: 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65  efault, all refe
b890: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
b8a0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ng..      /// en
b8b0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
b8c0: 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61  les will be expa
b8d0: 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f  nded to their co
b8e0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75  rresponding valu
b8f0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  es..      /// wi
b900: 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74  thin the value t
b910: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e  o be returned un
b920: 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20  less either the 
b930: 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a  "No_Expand" or..
b940: 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78        /// "No_Ex
b950: 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e  pand_<paramref n
b960: 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65  ame="name" />" e
b970: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
b980: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a  ble is set [to..
b990: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69        /// anythi
b9a0: 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ng]...      /// 
b9b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
b9c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b9d0: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
b9e0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
b9f0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
ba00: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
ba10: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
ba20: 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a  @default /* in *
ba30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
ba40: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
ba50: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ba60: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
ba70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ba80: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
ba90: 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c   special "No_SQL
baa0: 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
bab0: 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ue" environment.
bac0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
bad0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
bae0: 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
baf0: 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
bb00: 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  ill always..    
bb10: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
bb20: 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c  eturn the defaul
bb30: 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  t value...      
bb40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
bb50: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
bb60: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
bb70: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
bb80: 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
bb90: 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56  QLiteGetSettingV
bba0: 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  alue") != null).
bbb0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bbd0: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20  rn @default;..  
bbe0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
bbf0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
bc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bc50: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
bc60: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
bc70: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
bc80: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
bc90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcd0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
bce0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
bcf0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
bd00: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
bd10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
bd20: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
bd30: 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
bd40: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
bd50: 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  rom the environm
bd60: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
bd70: 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69  /       or possi
bd80: 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  bly from the XML
bd90: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
bda0: 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a  ile; create or..
bdb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
bdc0: 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65     increment the
bdd0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74 61   appropriate sta
bde0: 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20  tistic now...   
bdf0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
be00: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
be10: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
be20: 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66  eadCount(name, f
be30: 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alse);..#endif..
be40: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
be50: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
be60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bea0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
beb0: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
bec0: 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52   = true; /* SHAR
bed0: 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20  ED: Environment 
bee0: 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67  -AND- XML config
bef0: 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20   file. */....   
bf00: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
bf50: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
bf60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
bf70: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
bf80: 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
bf90: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
bfa0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
bfb0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
bfc0: 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
bfd0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
bfe0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bff0: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
c000: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c010: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
c020: 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
c030: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
c040: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
c050: 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
c060: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
c070: 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
c080: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
c090: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
c0a0: 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70           "No_Exp
c0b0: 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29  and_{0}", name))
c0c0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
c0d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c0e0: 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
c0f0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
c100: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c110: 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
c120: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
c130: 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29  ntVariable(name)
c140: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
c150: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
c160: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
c170: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
c180: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c190: 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20  (expand)..      
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
c1b0: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
c1c0: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
c1d0: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
c1e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
c1f0: 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
c200: 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
c210: 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c  riableTokens(val
c220: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
c230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
c240: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
c250: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c260: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
c270: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c280: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
c290: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51  E: If the "No_SQ
c2a0: 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  LiteXmlConfigFil
c2b0: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
c2c0: 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20  ariable is..    
c2d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
c2e0: 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d  et [to anything]
c2f0: 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  , this method wi
c300: 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66 72  ll NEVER read fr
c310: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
c320: 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63    //       XML c
c330: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c340: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
c350: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
c360: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
c370: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
c380: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
c390: 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58       "No_SQLiteX
c3a0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21  mlConfigFile") !
c3b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c3c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c3d0: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
c3e0: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ult;..          
c3f0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
c400: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
c410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c450: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
c460: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
c470: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
c480: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c490: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c4a0: 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
c4b0: 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
c4c0: 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d  alue from the XM
c4d0: 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  L..          // 
c4e0: 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
c4f0: 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65  ion file; create
c500: 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68   or increment th
c510: 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
c520: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c530: 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e    statistic now.
c540: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c550: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
c560: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74  ata.IncrementSet
c570: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61  tingReadCount(na
c580: 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64  me, true);..#end
c590: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
c5a0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
c5b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
c600: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c610: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56  GetSettingValueV
c620: 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28  iaXmlConfigFile(
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c640: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
c650: 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61  igFileName(), na
c660: 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78  me, @default, ex
c670: 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pand);..      }.
c680: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
c6e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c6f0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76  WORK..      priv
c700: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
c710: 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49  g ListToString(I
c720: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
c730: 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  t)..      {..   
c740: 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20         if (list 
c750: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
c760: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
c770: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
c780: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
c790: 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72  result = new Str
c7a0: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
c7b0: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
c7c0: 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65  ch (string eleme
c7d0: 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20  nt in list)..   
c7e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c7f0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
c800: 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent == null)..  
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c820: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
c830: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
c840: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
c850: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c860: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
c870: 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20  nd(' ');....    
c880: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
c890: 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29  .Append(element)
c8a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
c8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
c8c0: 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69  rn result.ToStri
c8d0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ng();..      }..
c8e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
c8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c930: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
c940: 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68  te static int Ch
c950: 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75  eckForArchitectu
c960: 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28  resAndPlatforms(
c970: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
c980: 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
c990: 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73           ref Lis
c9a0: 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
c9b0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
c9c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c9d0: 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
c9e0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
c9f0: 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e  if (matches == n
ca00: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ca10: 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65      matches = ne
ca20: 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29  w List<string>()
ca30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
ca40: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
ca50: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
ca60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ca70: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
ca80: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
ca90: 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20  tory) &&..      
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f              (pro
cab0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
cac0: 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e  rePlatforms != n
cad0: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
cae0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
caf0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
cb00: 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c  h (KeyValuePair<
cb10: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
cb20: 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20  pair..          
cb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb40: 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72    in processorAr
cb50: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
cb60: 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rms)..          
cb70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
cba0: 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69  xists(MaybeCombi
cbb0: 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
cbc0: 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20  , pair.Key))).. 
cbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc00: 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61    matches.Add(pa
cc10: 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ir.Key);..      
cc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc30: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
cc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc70: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70  string value = p
cc80: 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20  air.Value;....  
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
ccb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
cd00: 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
cd10: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
cd20: 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a  tory, value)))..
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd60: 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76     matches.Add(v
cd70: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
cdc0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cdd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cde0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cdf0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
ce00: 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lt;..      }....
ce10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ce20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ce60: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
ce70: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65   static bool Che
ce80: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
ce90: 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  se(..          A
cea0: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
ceb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
cec0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
ced0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
cee0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cef0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
cf00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
cf10: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d    if (assembly =
cf20: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
cf30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cf40: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
cf50: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
cf60: 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65   codeBase = asse
cf70: 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a  mbly.CodeBase;..
cf80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf90: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
cfa0: 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73  lOrEmpty(codeBas
cfb0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
cfc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
cfd0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
cfe0: 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20        Uri uri = 
cff0: 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65  new Uri(codeBase
d000: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d010: 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69    string localFi
d020: 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63  leName = uri.Loc
d030: 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  alPath;....     
d040: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
d050: 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46  le.Exists(localF
d060: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d080: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
d090: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
d0a0: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
d0b0: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
d0c0: 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
d0d0: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69           localFi
d0e0: 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
d0f0: 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  w */....        
d100: 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c        string xml
d110: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
d120: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
d130: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
d140: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c        directory,
d150: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
d160: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
d170: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
d180: 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46  xists(xmlConfigF
d190: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
d1a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
d1b0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
d1c0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
d1d0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
d1e0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d210: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d220: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
d230: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
d240: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d260: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d270: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d290: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
d2a0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
d2b0: 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ound XML configu
d2c0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d  ration file " +.
d2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d2e0: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
d2f0: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
d300: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
d310: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
d320: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d340: 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
d350: 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
d360: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
d370: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d380: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
d390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d3a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
d3c0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
d3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d3e0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
d400: 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
d410: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
d420: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d430: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
d440: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d450: 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74           List<st
d460: 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20  ring> matches = 
d470: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
d480: 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b         if (Check
d490: 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
d4a0: 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72  AndPlatforms(dir
d4b0: 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63  ectory, ref matc
d4c0: 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20  hes) > 0)..     
d4d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
d4e0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
d4f0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
d500: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
d510: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
d520: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d540: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d550: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
d560: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
d570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d590: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d5a0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5c0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
d5d0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
d5e0: 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d  ound native sub-
d5f0: 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d  directories " +.
d600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d610: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
d620: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
d630: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
d640: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
d650: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
d660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d670: 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61   ListToString(ma
d680: 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72  tches))); /* thr
d690: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
d6a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
d6c0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
d6d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6f0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
d700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d710: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
d720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d730: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
d740: 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
d750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d760: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
d770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d780: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d790: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
d7a0: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
d7b0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
d7c0: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
d7d0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
d7e0: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
d7f0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
d800: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
d810: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d820: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
d830: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
d840: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
d850: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d860: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d880: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
d890: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
d8a0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8c0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
d8d0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
d8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8f0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
d900: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
d910: 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63  r failed to chec
d920: 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d  k code base " +.
d930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d940: 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
d950: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
d960: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
d970: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
d980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d990: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
d9a0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
d9b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d9c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
d9d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
d9e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
d9f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
da00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
da10: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
da20: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
da30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
da80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
da90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  ry>..      /// R
daa0: 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64  esets the cached
dab0: 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74   assembly direct
dac0: 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20  ory value, thus 
dad0: 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74  forcing the next
dae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c  ..      /// call
daf0: 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47   to <see cref="G
db00: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
db10: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
db20: 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20  thod to rely..  
db30: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65      /// upon the
db40: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
db50: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
db60: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66  " /> method to f
db70: 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20  etch the..      
db80: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72  /// assembly dir
db90: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
dba0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
dbb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
dbc0: 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43 61  tic void ResetCa
dbd0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
dbe0: 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
dbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
dc00: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
dc10: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
dc20: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
dc30: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
dc40: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
dc50: 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65  _ResetCachedAsse
dc60: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
dc70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
dc80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
dc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
dca0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
dcb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
dcd0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
dce0: 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
dd00: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
dd10: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
dd20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
dd30: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
dd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd80: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
dd90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
dda0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
ddb0: 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68 65  eturns the cache
ddc0: 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  d directory for 
ddd0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
dde0: 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  rently..      //
ddf0: 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  / being executed
de00: 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20  , if available. 
de10: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 61   If the cached a
de20: 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
de30: 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  y value..      /
de40: 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  // is not availa
de50: 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ble, the <see cr
de60: 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44  ef="GetAssemblyD
de70: 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
de80: 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
de90: 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f  /// be used to o
dea0: 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62  btain the assemb
deb0: 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
dec0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ded0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
dee0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
def0: 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
df00: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
df10: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
df20: 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
df30: 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
df40: 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
df50: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
df60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
df70: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
df80: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
df90: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
dfa0: 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
dfb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dfc0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
dfd0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
dfe0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
dff0: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
e000: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
e010: 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41  ethod_GetCachedA
e020: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
e030: 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
e040: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
e050: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  n....          l
e060: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
e070: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
e080: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e090: 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65 6d   if (cachedAssem
e0a0: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20  blyDirectory != 
e0b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
e0c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e0d0: 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  cachedAssemblyDi
e0e0: 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20  rectory;....    
e0f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
e100: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
e110: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
e120: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
e130: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  l;..          }.
e140: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
e150: 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
e160: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
e170: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
e1d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e1e0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
e1f0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
e200: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
e210: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
e220: 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
e230: 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
e240: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
e250: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e260: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e270: 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
e280: 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
e290: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
e2a0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
e2b0: 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
e2c0: 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
e2d0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
e2e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
e2f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
e300: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
e310: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
e320: 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
e330: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
e340: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
e350: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
e370: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
e380: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
e390: 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  d_GetAssemblyDir
e3a0: 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
e3b0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
e3c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
e3d0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
e3e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e3f0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
e400: 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
e410: 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
e420: 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
e430: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
e440: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
e450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e460: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e470: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
e480: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
e490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e4b0: 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
e4c0: 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
e4d0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
e4e0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e500: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
e510: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e520: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
e530: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
e540: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
e550: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e560: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
e570: 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
e580: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
e590: 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
e5a0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
e5b0: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
e5c0: 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5f0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
e600: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
e610: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e630: 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
e640: 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e660: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e680: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
e690: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e6a0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
e6b0: 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d  me = assemblyNam
e6c0: 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c  e.CodeBase;..#el
e6d0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
e6e0: 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65    if (!CheckAsse
e6f0: 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73  mblyCodeBase(ass
e700: 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e  embly, ref fileN
e710: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
e720: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
e730: 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  e = assembly.Loc
e740: 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ation;..#endif..
e750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e760: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
e770: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
e780: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
e790: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e7a0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
e7b0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
e7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e7e0: 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
e7f0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
e800: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
e810: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e830: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
e840: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
e860: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
e870: 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
e880: 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65  oryName(fileName
e890: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e8a0: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
e8b0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
e8c0: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
e8d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
e8f0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
e900: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
e910: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
e930: 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
e940: 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
e950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e960: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e970: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
e980: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e990: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e9a0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
e9b0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
e9c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
e9e0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
e9f0: 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72  ctory = director
ea00: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
ea10: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ea20: 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
ea30: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
ea40: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
ea50: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
ea60: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
ea70: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
ea80: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
ea90: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
eaa0: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
eab0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
eac0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
ead0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
eae0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
eaf0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
eb00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
eb20: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
eb30: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
eb40: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
eb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb60: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
eb70: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
eb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb90: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
eba0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
ebb0: 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72 65  iled to get dire
ebc0: 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  ctory " +..     
ebd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebe0: 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20   "for currently 
ebf0: 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
ec00: 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
ec10: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
ec20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ec30: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ec40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ec60: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
ec70: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
ec80: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
ec90: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
eca0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
ecb0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
ecc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ecd0: 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
ece0: 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
ecf0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
ed00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
ed10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
ed20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
ed30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ed40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ed90: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
eda0: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
edb0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
edc0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
edd0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
ede0: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
edf0: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
ee00: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
ee10: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
ee20: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
ee30: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
ee40: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
ee50: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
ee60: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
ee70: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
ee80: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
ee90: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
eea0: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
eeb0: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
eec0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
eed0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
eee0: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
eef0: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
ef00: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
ef10: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
ef20: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
ef30: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
ef40: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
ef50: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
ef60: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
ef70: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
ef80: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
ef90: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
efa0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
efb0: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
efc0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
efd0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
efe0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
eff0: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
f000: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
f010: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
f020: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
f030: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
f040: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
f050: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
f060: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
f070: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
f080: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
f090: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f0a0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
f0b0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
f0c0: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
f0d0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
f0e0: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
f0f0: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
f100: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
f110: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
f120: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
f130: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
f140: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
f150: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
f160: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
f170: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
f180: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
f190: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
f1e0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
f1f0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
f200: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f210: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
f220: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
f230: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
f240: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
f250: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
f260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f270: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
f280: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
f290: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
f2a0: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
f2b0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
f2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
f310: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f320: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
f330: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
f340: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
f350: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
f360: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
f370: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
f380: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
f390: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f3a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
f3b0: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
f3c0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
f3d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
f3e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
f3f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
f450: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f460: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
f470: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
f480: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
f490: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
f4a0: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
f4b0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
f4c0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
f4d0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
f4e0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
f4f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f500: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f510: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
f520: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
f530: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
f540: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
f550: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
f560: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
f570: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
f580: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
f590: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
f5a0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
f5b0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
f5c0: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
f5d0: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
f5e0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
f5f0: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
f600: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
f610: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
f620: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
f630: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
f640: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
f650: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
f660: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
f670: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
f680: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
f690: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f6b0: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
f6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
f6d0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
f6e0: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
f6f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
f750: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f760: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
f770: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
f780: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
f790: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
f7a0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
f7b0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
f7c0: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
f7d0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
f7e0: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
f7f0: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
f800: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
f810: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
f820: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
f830: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
f840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
f850: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
f860: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
f870: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
f880: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
f890: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
f8a0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
f8b0: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
f8c0: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
f8d0: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
f8e0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
f8f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
f900: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
f910: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
f920: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
f930: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
f940: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
f950: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
f960: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
f970: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
f980: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
f990: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
f9a0: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
f9b0: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
f9c0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
f9d0: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
f9e0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
f9f0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
fa00: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
fa10: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
fa20: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
fa30: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
fa40: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
fa50: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
fa60: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
fa70: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
fa80: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
fa90: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
faa0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
fab0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
fac0: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
fad0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
fae0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
faf0: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
fb00: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
fb10: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
fb20: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
fb30: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
fb40: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
fb50: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
fb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
fb70: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fb90: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
fba0: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
fbb0: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
fbc0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
fbd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fbe0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
fbf0: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
fc00: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
fc10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fc20: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
fc30: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
fc40: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
fc50: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
fc60: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
fc70: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
fc80: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
fc90: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
fca0: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
fcb0: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
fcc0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
fcd0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
fce0: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
fcf0: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
fd00: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
fd10: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
fd20: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
fd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fd40: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
fd50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fd60: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fd70: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
fd80: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
fd90: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
fda0: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
fdb0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
fdc0: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
fdd0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
fde0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
fdf0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
fe00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
fe10: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
fe20: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
fe30: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
fe40: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
fe50: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
fe60: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
fe70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
fe80: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
fe90: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
fea0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
feb0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
fec0: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
fed0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
fee0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
fef0: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
ff00: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
ff10: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
ff20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
ff30: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ff40: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
ff50: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
ff60: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
ff70: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
ff80: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
ff90: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
ffa0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
ffb0: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
ffc0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
ffd0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
ffe0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
fff0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
10000 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
10010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10020 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
10030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
10040 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
10050 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
10060 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
10070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10090 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
100a0 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
100b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100c0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
100d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
100e0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
100f0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
10100 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
10110 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
10120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
10130 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
10140 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
10150 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10170 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
10180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10190 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
101a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
101b0 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
101c0 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
101d0 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
101e0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
101f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
10200 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
10210 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
10220 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
10250 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
10260 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
10270 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
10280 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10290 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
102a0 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
102b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
102c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
102d0 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
102e0 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
102f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10300 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
10310 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
10320 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10340 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
10350 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10370 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
10380 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
10390 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
103a0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
103b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103c0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
103d0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
103e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10400 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
10410 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
10420 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
10430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10450 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
10460 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
10470 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
10480 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104a0 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
104b0 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
104c0 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
104d0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
104e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104f0 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
10500 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
10540 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
10550 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10570 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
10580 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
105a0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105c0 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
105d0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105f0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
10600 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
10610 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10630 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
10640 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
10650 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10660 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10670 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10690 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
106a0 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
106b0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10700 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
10710 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10720 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
10730 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
10740 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
10750 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
10760 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
10770 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
10780 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10790 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
107a0 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
107b0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
107c0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
107d0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
107e0 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
107f0 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
10800 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
10810 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
10820 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10830 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10840 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
10850 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
10860 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
10870 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
10880 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
10890 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
108a0 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
108b0 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
108c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
108d0 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
108e0 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
108f0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
10900 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
10910 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
10920 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
10930 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
10940 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
10950 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
10960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
10970 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
10980 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
10990 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
109a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
109b0 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
109c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
109d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
109e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
109f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
10a00 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
10a10 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
10a20 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
10a30 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
10a40 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
10a50 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
10a60 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
10a70 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
10a80 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10a90 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
10aa0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
10ab0 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
10ac0 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
10ad0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
10ae0 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
10af0 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
10b00 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
10b10 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
10b20 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
10b30 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
10b40 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10b50 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
10b60 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
10b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b80 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
10b90 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
10ba0 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
10bb0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10bc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10bd0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
10be0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
10bf0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
10c00 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
10c10 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c30 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
10c40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
10c50 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
10c60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
10c70 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
10c80 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
10c90 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
10ca0 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
10cb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
10cc0 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
10cd0 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
10ce0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
10cf0 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
10d00 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
10d10 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
10d20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
10d30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10d40 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
10d50 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
10d60 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
10d70 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
10d80 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
10d90 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
10da0 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
10db0 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
10dc0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
10dd0 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
10de0 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
10df0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
10e00 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e50 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
10e60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10e70 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
10e80 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
10e90 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
10ea0 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
10eb0 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
10ec0 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
10ed0 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
10ee0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10ef0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
10f00 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
10f10 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
10f20 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
10f30 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
10f40 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
10f50 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
10f60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
10f70 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
10f80 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
10f90 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
10fa0 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
10fb0 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
10fc0 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
10fd0 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
10fe0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
10ff0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
11000 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
11010 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
11020 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
11030 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
11040 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
11050 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
11060 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
11070 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
11080 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
11090 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
110a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
110b0 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
110c0 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
110d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
110e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
110f0 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
11100 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
11110 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11130 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
11140 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
11150 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
11190 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
111a0 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
111c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
111d0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
111e0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
111f0 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
11200 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11250 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
11260 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11270 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
11280 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
11290 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
112a0 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
112b0 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
112c0 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
112d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
112e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
112f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
11300 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
11310 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
11320 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
11330 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
11340 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
11350 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
11360 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
11370 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11380 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
11390 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
113a0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
113b0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
113c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
113d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
113e0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
113f0 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
11400 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
11410 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
11420 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
11430 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
11440 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
11450 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
11460 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
11470 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
11480 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
11490 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
114a0 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
114b0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
114c0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
114e0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
114f0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11500 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
11510 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
11520 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
11530 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
11540 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11550 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
11560 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
11570 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11580 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
11590 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
115a0 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
115b0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
115c0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
115d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
115e0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
115f0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
11600 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
11610 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11660 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11670 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11680 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
11690 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
116a0 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
116b0 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
116c0 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
116d0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
116e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
116f0 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
11700 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
11710 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
11720 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
11730 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11740 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
11750 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
11760 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
11770 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
11780 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
11790 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
117a0 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
117b0 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
117c0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
117d0 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
117e0 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
117f0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
11800 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
11810 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
11820 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
11830 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
11840 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
11850 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
11860 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
11870 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
11880 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
11890 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
118a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
118b0 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
118c0 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
118d0 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
118e0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
118f0 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
11900 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
11910 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
11920 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
11930 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
11940 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
11950 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
11960 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
11970 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
11980 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
11990 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
119a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
119b0 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
119c0 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
119d0 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
119e0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
119f0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
11a00 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
11a10 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
11a20 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
11a30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11a40 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
11a50 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
11a60 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
11a70 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
11a80 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
11a90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11ab0 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
11ac0 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
11ad0 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
11ae0 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
11af0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
11b00 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
11b10 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
11b20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
11b30 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
11b40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
11b50 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
11b60 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
11b70 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
11b80 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
11b90 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
11ba0 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
11bb0 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
11bc0 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
11bd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
11be0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
11bf0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
11c00 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
11c10 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
11c20 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
11c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11c40 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
11c50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11c60 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11c80 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
11c90 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
11ca0 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
11cb0 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
11cd0 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
11ce0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
11cf0 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
11d00 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
11d10 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d30 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
11d40 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
11d50 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d70 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11d80 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11da0 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
11db0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
11dc0 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
11dd0 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
11de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11df0 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
11e00 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
11e10 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
11e20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
11e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e40 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
11e50 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
11e60 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
11e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e80 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
11e90 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
11ea0 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
11eb0 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ed0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
11ee0 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
11ef0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
11f00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11f10 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f40 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
11f50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11f60 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
11f70 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
11f80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
11f90 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
11fa0 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
11fb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11fc0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11fd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
11fe0 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
11ff0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
12000 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
12010 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
12020 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
12030 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
12040 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
12050 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
12060 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
12070 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
12080 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
12090 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
120a0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
120b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
120c0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
120d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
120f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12100 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
12110 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
12120 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
12130 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12150 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
12160 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
12170 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
12180 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
121b0 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
121c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
121e0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
121f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
12200 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  32.SYSTEM_INFO s
12210 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20  ystemInfo;....  
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12230 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12240 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
12250 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
12260 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
12270 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
12280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12290 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
122a0 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
122b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
122c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
122d0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
122e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
122f0 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66  n32.GetSystemInf
12300 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
12310 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12320 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12340 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
12350 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
12360 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
12370 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12390 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
123a0 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
123b0 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123d0 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77      systemInfo.w
123e0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
123f0 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
12400 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12410 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12420 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
12430 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
12450 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
12460 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
12480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12490 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
124a0 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
124b0 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54  empty string.  T
124c0 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74  his will prevent
124d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
124e0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c  //       the cal
124f0 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d  ling method from
12500 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69   considering thi
12510 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d  s method call a.
12520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
12530 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65  /       "failure
12540 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "...            
12550 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12560 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
12570 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69  hitecture = Stri
12580 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
12590 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
125a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
125b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
12600 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
12610 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
12620 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
12680 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12690 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74       /// Given t
126a0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
126b0 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72  hitecture, retur
126c0 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
126d0 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  he platform...  
126e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
126f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
12700 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
12710 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
12720 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
12730 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
12740 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74  itecture to be t
12750 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70  ranslated to a p
12760 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
12770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
12780 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
12790 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
127a0 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  / The platform n
127b0 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  ame for the spec
127c0 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
127d0 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52  architecture -OR
127e0 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  - null..      //
127f0 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  / if it cannot b
12800 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
12810 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
12820 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
12830 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
12840 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
12850 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
12860 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
12870 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20  hitecture /* in 
12880 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
12890 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
128a0 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
128b0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
128c0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
128d0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
128e0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
128f0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
12900 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
12910 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
12920 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
12930 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
12940 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
12950 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
12960 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
12970 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
12980 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
12990 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
129a0 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
129b0 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
129c0 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
12a10 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
12a20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
12a30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
12a40 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56  latforms.TryGetV
12a50 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
12a60 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
12a70 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
12a80 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d  re, out platform
12a90 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
12aa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12ab0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12ac0 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  n platformName;.
12ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
12ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
12af0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
12b00 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
12b10 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
12b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b60 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
12b70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12b80 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
12b90 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
12ba0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62  SQLite library b
12bb0 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ased on the spec
12bc0 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
12bd0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70   directory and p
12be0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
12bf0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
12c00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12c10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12c20 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
12c30 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
12c40 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
12c50 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20  ry to use, null 
12c60 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
12c70 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
12c80 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  of..      /// th
12c90 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
12ca0 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20  ation domain).  
12cb0 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73  This directory s
12cc0 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68  hould contain th
12cd0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
12ce0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
12cf0 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62  ure specific sub
12d00 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20  -directories... 
12d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
12d20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
12d30 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
12d40 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
12d50 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
12d60 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65   requested proce
12d70 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
12d80 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
12d90 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20  ult (the..      
12da0 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
12db0 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
12dc0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
12dd0 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72  s).  This caller
12de0 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
12df0 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73  // almost always
12e00 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f   specify null fo
12e10 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  r this parameter
12e20 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
12e30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
12e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
12e50 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
12e60 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
12e70 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61  The candidate na
12e80 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
12e90 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69   name to load wi
12ea0 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72  ll be stored her
12eb0 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  e,..      /// if
12ec0 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
12ed0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12ee0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
12ef0 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f  m name="nativeMo
12f00 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20  duleHandle">..  
12f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
12f20 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
12f30 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
12f40 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c  LoadLibrary will
12f50 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20   be stored..    
12f60 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e    /// here, if n
12f70 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20  ecessary.  This 
12f80 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e  value will be In
12f90 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65  tPtr.Zero if the
12fa0 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20   call to..      
12fb0 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20  /// LoadLibrary 
12fc0 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  fails...      //
12fd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12fe0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
12ff0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
13000 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
13010 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61  e module was loa
13020 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ded successfully
13030 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
13040 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
13050 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
13060 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
13070 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  te static bool P
13080 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
13090 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
130a0 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
130b0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
130c0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
130d0 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
130e0 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20  rArchitecture,  
130f0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
13100 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
13110 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
13120 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  eName, /* out */
13130 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
13140 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64  IntPtr nativeMod
13150 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20  uleHandle    /* 
13160 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
13170 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
13180 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13190 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
131a0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
131b0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
131c0 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
131d0 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20  default..       
131e0 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65     //       (i.e
131f0 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74  . attempt to aut
13200 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63  omatically detec
13210 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20  t it)...        
13220 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13230 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
13240 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
13250 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
13260 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
13270 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
13280 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13290 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
132a0 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
132b0 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
132c0 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
132d0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
132e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
132f0 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
13300 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
13310 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13320 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
13330 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13340 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72    // NOTE: Deter
13350 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69  mine the base fi
13360 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
13370 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
13380 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
13390 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68    //       If th
133a0 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20  is is not known 
133b0 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77  by this class, w
133c0 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
133d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
133e0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
133f0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
13400 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  = GetNativeLibra
13410 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
13420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
13430 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
13440 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
13450 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
13460 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
13470 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13480 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
13490 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
134a0 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
134b0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
134c0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
134d0 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
134e0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
134f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13500 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
13510 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
13520 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
13530 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63  nePath(baseDirec
13540 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
13550 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c       fileNameOnl
13560 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
13570 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
13580 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
13590 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
135a0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
135b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
135c0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
135d0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
135e0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
135f0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
13600 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
13610 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
13620 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
13630 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
13640 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
13650 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
13660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
13670 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
13680 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
13690 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
136a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
136b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
136c0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
136d0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
136e0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
136f0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
13700 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
13710 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
13720 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
13730 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
13740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13750 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13760 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13770 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13780 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
13790 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
137a0 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
137b0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
137c0 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
137d0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
137e0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
137f0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
13800 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13810 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
13820 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
13830 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
13840 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
13850 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
13860 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
13870 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
13880 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
13890 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
138a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
138b0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
138c0 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
138d0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
138e0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
138f0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
13900 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
13910 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
13920 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
13930 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
13940 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13950 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
13960 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
13970 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
13980 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
139a0 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
139b0 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
139c0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
139d0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
139e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
139f0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
13a00 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
13a10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13a20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
13a30 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
13a40 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
13a50 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
13a60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
13a70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13a80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
13a90 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
13aa0 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
13ab0 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
13ac0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
13ad0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13ae0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
13af0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
13b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b10 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
13b20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13b30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13b40 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
13b50 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
13b60 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
13b70 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
13b80 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
13b90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
13ba0 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
13bb0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
13bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
13bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
13be0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
13bf0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
13c00 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
13c10 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c30 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
13c40 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
13c50 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
13c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
13c80 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
13c90 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
13ca0 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
13cb0 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
13cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ce0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
13cf0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13d10 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
13d20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13d30 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
13d40 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
13d50 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
13d60 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
13d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13da0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13db0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
13dc0 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79  TE: Show exactly
13dd0 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72   where we are tr
13de0 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65  ying to load the
13df0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
13e00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
13e10 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
13e20 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  ry from...      
13e30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
13e60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
13e70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
13e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e90 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
13ea0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
13eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ec0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
13ed0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
13ee0 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  er is trying to 
13ef0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
13f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f10 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
13f20 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e  ibrary \"{0}\"..
13f30 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20  .", fileName)); 
13f40 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
13f50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13f60 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
13f70 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
13f80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13f90 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
13fa0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
13fb0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
13fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
13fd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13fe0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
13ff0 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
14000 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
14010 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
14020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14030 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
14040 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
14050 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
14060 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
14070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14080 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
14090 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20  w an exception. 
140a0 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74   This must use t
140b0 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
140c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
140d0 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20         P/Invoke 
140e0 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63  method for the c
140f0 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67  urrent operating
14100 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20   system...      
14110 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
14120 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
14130 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
14140 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
14150 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
14160 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e  ModuleHandle = N
14170 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
14180 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  er.LoadLibrary(f
14190 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
141a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
141b0 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
141c0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
141d0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
141e0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
141f0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
14200 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
14210 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
14220 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
14230 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
14240 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
14250 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
14260 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
14270 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
14280 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
14290 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
142a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
142b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
142c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
142d0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
142e0 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
142f0 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
14300 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
14310 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14330 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
14340 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
14350 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
14360 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14390 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
143a0 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
143b0 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
143c0 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
143d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
143e0 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
143f0 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
14400 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
14410 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
14420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
14430 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
14440 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14460 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14470 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
14480 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
14490 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
144a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
144b0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
144c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
144d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
144e0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
144f0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
14500 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
14510 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
14520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14530 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
14540 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
14550 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
14560 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
14570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14580 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
14590 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
145a0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
145b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
145c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
145e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145f0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
14600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14610 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
14620 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14630 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
14640 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
14650 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
14660 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14670 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
146c0 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
146d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
146e0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
146f0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
14700 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
14710 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
14720 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
14730 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
14740 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
14750 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
14760 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
14770 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
14780 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
14790 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
147a0 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
147b0 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
147c0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
147d0 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
147e0 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
147f0 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
14800 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
14810 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
14820 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
14830 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
14840 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
14850 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
14860 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
14870 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
14880 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
14890 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
148a0 65 2e 49 6e 74 65 72 6f 70 2e 31 30 36 2e 64 6c  e.Interop.106.dl
148b0 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
148c0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
148d0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
148e0 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
148f0 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
14900 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
14910 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
14920 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
14930 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
14940 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
14950 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
14960 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
14970 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
14980 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
14990 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
149a0 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
149b0 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
149c0 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
149d0 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
149e0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
149f0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
14a00 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
14a10 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
14a20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
14a30 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
14a40 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
14a50 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
14a60 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
14a70 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
14a80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
14a90 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
14aa0 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
14ab0 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
14ac0 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
14ad0 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
14ae0 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
14af0 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
14b00 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
14b10 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
14b20 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
14b30 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
14b40 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
14b50 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
14b60 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
14b70 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
14b80 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
14b90 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
14ba0 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
14bb0 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
14bc0 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
14bd0 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
14be0 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
14bf0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
14c00 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14c20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14c30 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14c40 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
14c50 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
14c60 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
14c70 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
14c80 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
14c90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14ca0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14cb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14cc0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14cd0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
14ce0 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
14cf0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
14d00 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
14d10 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
14d20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14d30 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
14d40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14d50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
14d60 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
14d70 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
14d80 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
14d90 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
14da0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
14db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14dc0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14dd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14de0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
14df0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
14e00 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
14e10 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
14e20 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
14e30 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14e40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14e50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14e60 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14e70 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
14e80 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
14e90 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14ea0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14eb0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
14ec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ed0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14ee0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14ef0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14f00 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
14f10 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
14f20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14f30 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
14f40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14f50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14f60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14f70 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14f80 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
14f90 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
14fa0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14fb0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
14fc0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
14fd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14fe0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
14ff0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
15000 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
15010 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
15020 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
15030 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
15040 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
15050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15060 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
15070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15080 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
15090 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
150a0 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
150b0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
150c0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
150d0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
150e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
150f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15100 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15110 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15120 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
15130 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
15140 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15150 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
15160 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
15170 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15180 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
15190 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
151a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
151b0 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
151c0 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
151d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
151e0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
151f0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
15200 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15210 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15220 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15230 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
15240 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
15250 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15260 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
15270 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
15280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15290 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
152a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
152b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
152c0 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
152d0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
152e0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
152f0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
15300 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15310 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15320 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15330 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
15340 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
15350 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
15360 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
15370 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15380 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15390 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
153a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
153b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
153c0 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
153d0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
153e0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
153f0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
15400 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
15410 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
15420 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
15430 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15440 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15460 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15470 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15480 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
15490 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
154a0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
154b0 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
154c0 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
154d0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
154e0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
154f0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
15500 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
15510 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
15520 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
15530 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
15540 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
15550 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
15560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15570 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15580 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15590 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
155a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
155b0 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
155c0 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
155d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
155e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
155f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15600 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15610 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
15620 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
15630 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
15640 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
15650 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15660 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
15670 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15680 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
15690 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
156a0 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
156b0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
156c0 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
156d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
156e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
156f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15700 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15710 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
15720 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
15730 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
15740 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
15750 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
15760 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
15770 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
15780 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
15790 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
157a0 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
157b0 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
157c0 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
157d0 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
157e0 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
157f0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
15800 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
15810 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
15820 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
15830 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
15840 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
15850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15870 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
15880 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
15890 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
158a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
158b0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
158c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
158d0 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
158e0 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
158f0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15900 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15910 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15920 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
15930 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
15940 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
15950 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
15960 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15970 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15980 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15990 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
159a0 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
159b0 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
159c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
159d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
159e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
159f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15a00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15a10 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
15a20 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
15a30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15a40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15a60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
15a70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
15a80 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
15a90 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
15aa0 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
15ab0 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
15ac0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
15ad0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
15ae0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
15af0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
15b00 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
15b10 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
15b20 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
15b30 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
15b40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15b50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15b60 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
15b70 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
15b80 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
15b90 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
15ba0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
15bb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15bc0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15bd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15be0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15bf0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
15c00 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
15c10 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
15c20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15c30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
15c40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15c50 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
15c60 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
15c70 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  lob_close_intero
15c80 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  p(IntPtr blob);.
15c90 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
15ca0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15cb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15cc0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
15cd0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15ce0 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
15cf0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
15d00 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
15d10 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
15d20 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
15d30 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
15d40 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
15d50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15d60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15d70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15d80 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15d90 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15da0 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
15db0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
15dc0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
15dd0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
15de0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
15df0 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
15e00 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
15e10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15e20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
15e30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15e40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
15e50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
15e60 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
15e70 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
15e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15e90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
15ea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15eb0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
15ec0 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
15ed0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
15ee0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
15ef0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
15f00 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15f10 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
15f20 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
15f30 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
15f40 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
15f50 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
15f60 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
15f70 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
15f80 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
15f90 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
15fa0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15fb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15fc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15fd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15fe0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15ff0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16000 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16010 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16020 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16030 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16040 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16050 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16060 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
16070 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
16080 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
16090 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
160a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
160b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
160c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
160d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
160e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
160f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16100 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16110 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16120 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16130 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16140 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16150 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16160 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
16170 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
16180 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
16190 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
161a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
161b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
161c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
161d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
161e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
161f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16200 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16210 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16220 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16230 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16240 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16250 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
16260 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
16270 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
16280 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
16290 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
162a0 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
162b0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
162c0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
162d0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
162e0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
162f0 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
16300 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16310 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16330 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16340 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16350 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16360 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16370 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16380 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16390 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
163a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
163b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
163c0 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
163d0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
163e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
163f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16410 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16420 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16430 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16440 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16450 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16460 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16470 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16480 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16490 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
164a0 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
164b0 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
164c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
164d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
164e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
164f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16500 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16510 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16520 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16530 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16540 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16550 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16560 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16570 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
16580 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
16590 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
165a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
165b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
165c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
165d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
165e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
165f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16600 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16610 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16620 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16630 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16640 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16650 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16660 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
16670 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
16680 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16690 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
166a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
166b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
166c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
166d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
166e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
166f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16700 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16720 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16730 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16740 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16750 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
16760 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
16770 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16780 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16790 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
167a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
167b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
167c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
167d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
167e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
167f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16810 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16820 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16830 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16840 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
16850 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
16860 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
16870 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
16880 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16890 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
168a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
168b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
168c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
168d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
168e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
168f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16900 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16910 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16920 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
16930 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
16940 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
16950 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16960 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16970 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16980 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16990 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
169a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
169b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
169c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
169d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
169e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
169f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16a00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16a10 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16a20 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
16a30 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
16a40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16a50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16a60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16a70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16a80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16a90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16aa0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16ab0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16ac0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16ad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16ae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16af0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16b00 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16b10 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
16b20 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
16b30 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
16b40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16b60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16b70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16b80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16b90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16ba0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16bb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16bc0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16bd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16be0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
16bf0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
16c00 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
16c10 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16c20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16c40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16c50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16c60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16c70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16c80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16c90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16ca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16cb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16cc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16cd0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16ce0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
16cf0 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
16d00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
16d10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16d20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16d30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16d40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16d50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16d60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16d70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16d80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16d90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16da0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16db0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16dc0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
16dd0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
16de0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
16df0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
16e00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16e10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16e20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16e30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16e40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16e50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16e60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16e70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16e80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16e90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16ea0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16eb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
16ec0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
16ed0 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
16ee0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16ef0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16f00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16f10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16f20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16f30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16f40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16f50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16f60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16f70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16f80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16f90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16fa0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16fb0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
16fc0 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
16fd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
16fe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
170a0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
170b0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
170c0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
170d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
170e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
170f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17100 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17110 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17130 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17150 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17160 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17170 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
17180 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
17190 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
171a0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
171b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
171c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
171d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
171e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
171f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17200 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17210 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17220 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17230 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17240 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17250 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17260 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17270 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
17280 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
17290 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
172a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
172b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
172c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
172d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
172e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
172f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17300 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17310 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17320 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17330 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17340 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17350 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
17360 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
17370 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
17380 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
17390 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
173a0 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
173b0 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
173c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
173d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
173e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
173f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17420 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17430 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17440 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17450 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17460 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17470 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17480 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
17490 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
174a0 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
174b0 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
174c0 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
174d0 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
174e0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
174f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17510 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17520 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17530 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17540 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17550 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
17560 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17570 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
17580 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17590 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
175a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
175b0 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
175c0 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
175d0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
175e0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
175f0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
17600 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
17610 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
17620 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
17630 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
17640 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
17650 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
17660 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
17670 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17680 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
176a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
176b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
176c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
176d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
176e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
176f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17700 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17710 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17720 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
17730 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
17740 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17750 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17760 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17770 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17780 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17790 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
177a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
177b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
177c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
177d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
177e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
177f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17800 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
17810 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
17820 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
17830 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
17840 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
17850 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
17860 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
17870 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
17880 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
17890 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
178a0 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
178b0 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
178c0 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
178d0 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
178e0 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
178f0 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
17900 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
17910 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
17920 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
17930 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
17940 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17950 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
17960 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17970 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17980 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
17990 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
179a0 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
179b0 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
179c0 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
179d0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
179e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
179f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17a00 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
17a10 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
17a20 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
17a30 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
17a40 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
17a50 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
17a60 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
17a70 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
17a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17a90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17aa0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17ab0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17ac0 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
17ad0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
17ae0 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
17af0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
17b00 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17b10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17b20 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17b30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17b40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
17b50 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
17b60 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
17b70 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
17b80 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
17b90 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
17ba0 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
17bb0 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
17bc0 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
17bd0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
17be0 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
17bf0 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
17c00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17c10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
17c20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17c30 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
17c40 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f  e3_table_cursor_
17c50 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
17c60 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74  tmt, int db, int
17c70 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b   tableRootPage);
17c80 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  ....#endif..// !
17c90 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
17ca0 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
17cb0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e  n....    // Stan
17cc0 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67  dard API calls g
17cd0 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72  lobal across ver
17ce0 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72  sions.  There ar
17cf0 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65  e a few instance
17d00 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c  s of interop cal
17d10 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74  ls..    // scatt
17d20 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75  ered in here, bu
17d30 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20  t they are only 
17d40 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54  active when PLAT
17d50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17d60 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65  EWORK is declare
17d70 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  d...    #region 
17d80 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20  standard sqlite 
17d90 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  api calls....#if
17da0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17db0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17dc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17dd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17de0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17df0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17e00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17e10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17e20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17e30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17e40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17e50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62  tPtr sqlite3_lib
17e60 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69  version();....#i
17e70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17e80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17e90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17ea0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17eb0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17ec0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17ed0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17ef0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17f00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17f10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
17f20 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  nt sqlite3_libve
17f30 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d  rsion_number();.
17f40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17f50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17f70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17f80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17f90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17fa0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17fb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17fc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17fd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17fe0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17ff0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18000 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
18010 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18020 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18030 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18040 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18060 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18070 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18080 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
180a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
180b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
180c0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
180d0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
180e0 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
180f0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
18100 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18110 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18120 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18130 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18140 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18150 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18160 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18180 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18190 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
181a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
181b0 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
181c0 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
181d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
181e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
181f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18200 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18210 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18220 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18230 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18240 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18250 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18260 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18270 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18280 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18290 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
182a0 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
182b0 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65  (..        int e
182c0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
182d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
182e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
182f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18300 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18310 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18320 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18330 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18340 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18350 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18360 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18370 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18380 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18390 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
183a0 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
183b0 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
183c0 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
183d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
183e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
183f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18400 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18410 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18420 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18430 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18440 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18450 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18460 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18470 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18480 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18490 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
184a0 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
184b0 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
184c0 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
184d0 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
184e0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
184f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18500 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18510 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18530 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18540 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18550 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18560 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18570 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18580 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18590 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
185a0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
185b0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
185c0 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
185d0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
185e0 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
185f0 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
18600 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
18610 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18620 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18630 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18640 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18650 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18660 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
18670 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
18680 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
18690 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
186a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
186b0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
186c0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
186d0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
186e0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
186f0 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
18700 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
18710 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
18720 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
18730 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
18740 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
18750 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
18760 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18770 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18780 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
18790 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
187a0 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
187b0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
187c0 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
187d0 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
187e0 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
187f0 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
18800 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18810 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18820 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18830 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18840 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18850 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18860 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18870 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18880 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18890 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
188a0 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
188b0 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
188c0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
188d0 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
188e0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
188f0 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
18900 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
18910 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
18920 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
18930 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
18940 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
18950 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
18960 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
18970 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
18980 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
18990 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
189a0 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
189b0 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
189c0 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
189d0 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
189e0 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
189f0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
18a00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18a10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
18a20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
18a30 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
18a40 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
18a50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18a60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18a70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18a80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18a90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18aa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18ab0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18ac0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ad0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18ae0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
18af0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
18b00 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
18b10 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
18b20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
18b30 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
18b40 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
18b50 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
18b60 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
18b70 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
18b80 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
18b90 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
18ba0 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
18bb0 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
18bc0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
18bd0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
18be0 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
18bf0 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
18c00 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
18c10 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
18c20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
18c30 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
18c40 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
18c50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18c60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18c70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18c80 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
18c90 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
18ca0 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
18cb0 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#i
18cc0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18cd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18ce0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18cf0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18d00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18d10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18d20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18d30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18d40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18d50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18d60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
18d70 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
18d80 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
18d90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18da0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18db0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18dc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18dd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18de0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18df0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18e00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18e10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18e20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18e30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18e40 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18e50 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
18e60 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
18e70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18e80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18e90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ea0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18eb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18ec0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18ed0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18ee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18ef0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18f00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18f10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
18f20 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
18f30 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
18f40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18f50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18f70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18f80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18fa0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18fb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18fc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18fd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18fe0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18ff0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19000 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
19010 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
19020 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
19030 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
19040 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79  gsEnum flags, by
19050 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a  te[] vfsName);..
19060 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19070 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19080 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19090 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
190a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
190b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
190c0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
190d0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
190e0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
190f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19100 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
19110 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
19120 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
19130 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19140 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19150 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19160 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66  _open16(string f
19170 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ileName, ref Int
19180 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
19190 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
191a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
191b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
191c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
191d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
191e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
191f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19210 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19220 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19230 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
19240 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
19250 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  upt(IntPtr db);.
19260 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19270 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19280 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19290 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
192a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
192b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
192c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
192d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
192e0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
192f0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
19300 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62  _rowid(IntPtr db
19310 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
19320 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19330 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19350 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19360 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19380 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19390 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
193a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
193b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
193c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
193d0 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
193e0 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
193f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19400 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19410 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19420 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19430 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19440 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19450 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
19460 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19470 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
19480 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
19490 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
194a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
194b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
194c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
194d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
194e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
194f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19500 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
19510 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19520 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
19530 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
19540 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
19550 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
19560 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19570 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19580 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19590 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
195a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
195b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
195c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
195d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
195e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
195f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19600 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19610 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19620 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b  ite3_shutdown();
19630 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
19640 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19650 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
19670 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19680 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
19690 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
196a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
196b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
196c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
196d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
196e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
196f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73  Code sqlite3_bus
19700 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
19710 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
19720 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19730 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19740 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19750 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19760 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
19770 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19780 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
19790 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
197a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
197b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
197c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
197d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
197e0 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  e sqlite3_clear_
197f0 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20  bindings(IntPtr 
19800 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
19810 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19820 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19830 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19840 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19850 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19860 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19870 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19880 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19890 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
198a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
198b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
198c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
198d0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
198e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
198f0 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
19900 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
19910 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
19920 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19930 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19940 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19970 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19980 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
19990 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
199a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
199b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
199c0 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
199d0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
199e0 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
199f0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
19a00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19a10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
19a40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19a60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
19a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19a80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19a90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19aa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19ab0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19ac0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
19ad0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
19ae0 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
19af0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
19b00 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
19b10 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
19b20 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
19b30 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
19b40 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
19b50 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
19b60 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
19b70 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
19b80 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
19b90 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
19ba0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19bb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19bc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19bd0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
19be0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
19bf0 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
19c00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19c10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19c20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19c30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19c40 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
19c50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
19c60 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
19c70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19c80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19c90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19ca0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
19cb0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
19cc0 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
19cd0 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
19ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19cf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19d00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19d10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19d20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19d30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19d40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19d50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19d60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19d70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19d80 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
19d90 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
19da0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
19db0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
19dc0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
19dd0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
19de0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19df0 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
19e00 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
19e10 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
19e20 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
19e30 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
19e40 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
19e50 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
19e60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19e70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19e80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19e90 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
19ea0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
19eb0 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
19ec0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
19ed0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19ee0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
19ef0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19f00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
19f10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
19f20 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
19f30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
19f40 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
19f50 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
19f60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19f70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19f80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19f90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19fa0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19fb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19fc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19fe0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19ff0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a000 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a010 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a020 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
1a030 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1a040 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1a050 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a060 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a070 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a080 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a090 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a0a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a0b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a0c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a0d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a0e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a0f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1a100 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1a110 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
1a120 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1a130 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
1a140 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
1a150 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1a160 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a170 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a180 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a190 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a1a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a1b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a1c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a1d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a1e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a1f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a200 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a210 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1a220 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
1a230 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
1a240 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a260 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a290 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a2a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a2b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a2c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a2d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a2e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a2f0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1a300 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
1a310 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
1a320 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
1a330 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
1a340 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a350 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a360 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a370 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a380 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a390 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a3a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a3b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a3c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a3d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a3e0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1a3f0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
1a400 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
1a410 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a420 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a430 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a440 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a450 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a460 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a470 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a480 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a490 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a4a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a4b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a4c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a4d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
1a4e0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
1a4f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a500 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a510 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a520 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a530 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a540 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a550 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a560 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a590 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a5a0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1a5b0 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
1a5c0 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
1a5d0 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#if 
1a5e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a5f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a610 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a620 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a630 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a640 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1a650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a660 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
1a670 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
1a680 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1a690 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
1a6a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a6b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a6c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a6d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a6e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a6f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a700 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a710 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a730 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a740 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a750 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1a760 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
1a770 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a780 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a790 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a7a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a7b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a7c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a7d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a7e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a7f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a800 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
1a810 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
1a820 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
1a830 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
1a840 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1a850 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a860 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a870 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a880 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a890 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a8a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a8b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a8c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a8d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a8e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a8f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1a900 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1a910 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
1a920 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1a930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a960 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a970 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a990 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a9c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a9d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a9e0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1a9f0 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
1aa00 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1aa10 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1aa20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aa30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1aa40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1aa50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aa60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1aa70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1aa80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1aa90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1aaa0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1aab0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1aac0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1aad0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
1aae0 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1aaf0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1ab00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ab10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ab20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ab30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ab40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ab50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ab60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ab70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ab80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ab90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1aba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1abb0 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
1abc0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
1abd0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1abe0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1abf0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ac00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ac10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ac20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ac30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1ac40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ac50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ac60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ac70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ac80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ac90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1aca0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1acb0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
1acc0 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
1acd0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1ace0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1acf0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1ad00 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
1ad10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ad20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ad30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ad40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ad50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ad60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ad70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ad80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ad90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ada0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1adb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1adc0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1add0 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
1ade0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1adf0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1ae00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ae10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ae20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ae30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ae40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ae50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ae60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ae70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ae80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ae90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1aea0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1aeb0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
1aec0 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
1aed0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1aee0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1aef0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1af00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1af10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1af20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1af30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1af40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1af50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1af60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1af70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1af80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
1af90 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
1afa0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1afb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1afc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1afd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1afe0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aff0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b000 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b010 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b020 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b030 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b040 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b050 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b060 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
1b070 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
1b080 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b090 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b0a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b0b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b0c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b0d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b0e0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1b0f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b100 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
1b110 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
1b120 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
1b130 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1b140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b150 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1b160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b170 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1b180 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1b190 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b1a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1b1b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b1c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1b1d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b1e0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1b1f0 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
1b200 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
1b210 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b220 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b230 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b240 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b250 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b260 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b270 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1b280 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b290 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
1b2a0 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
1b2b0 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
1b2c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b2d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b2e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b2f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b300 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b310 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b320 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b340 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b350 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b360 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b370 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
1b380 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
1b390 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1b3a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b3b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b3c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b3d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b3e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b3f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b400 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b410 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b420 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b430 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b440 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b450 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1b460 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
1b470 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
1b480 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
1b490 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1b4a0 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1b4b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b4c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b4d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b4e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b4f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b500 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b510 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b520 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1b530 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1b540 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
1b550 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
1b560 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1b570 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b580 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b590 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b5b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b5c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b5d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b5e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b5f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b600 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b610 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b620 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1b630 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
1b640 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
1b650 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
1b660 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
1b670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b690 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b6a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b6b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b6c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b6d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b6e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b6f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b700 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b710 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1b720 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1b730 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
1b740 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
1b750 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
1b760 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b770 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b780 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b7a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b7b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b7c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b7d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b7e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b7f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b800 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b810 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1b820 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1b830 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
1b840 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
1b850 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b860 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b870 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b880 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b890 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b8a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b8b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b8c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b8d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b8e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b8f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1b900 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1b910 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
1b920 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
1b930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b950 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b960 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b970 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b990 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b9a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b9b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b9c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b9d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b9e0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1b9f0 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
1ba00 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
1ba10 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
1ba20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ba30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ba40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ba50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ba60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ba70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ba80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ba90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1baa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1bab0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1bac0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1bad0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1bae0 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
1baf0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
1bb00 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1bb10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bb20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bb30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bb40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bb50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bb60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bb70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1bb80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bb90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1bba0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1bbb0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1bbc0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
1bbd0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1bbe0 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
1bbf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bc00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bc10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bc20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1bc30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1bc40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bc50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1bc60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bc70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1bc80 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
1bc90 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1bca0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
1bcb0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1bcc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bcd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1bce0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bcf0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1bd00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1bd10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bd20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1bd30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bd40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1bd50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bd60 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1bd70 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
1bd80 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
1bd90 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1bda0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bdb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bdc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bdd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bde0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bdf0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1be00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1be10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1be20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1be30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1be40 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1be50 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
1be60 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1be70 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
1be80 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
1be90 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1bea0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1beb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bec0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bed0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bee0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bef0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bf00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bf10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bf20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1bf30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1bf40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bf50 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1bf60 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
1bf70 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1bf80 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
1bf90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bfa0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bfb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bfc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1bfd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1bfe0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1bff0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
1c000 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1c010 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
1c020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c030 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1c040 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1c050 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
1c060 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c070 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1c080 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1c090 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
1c0a0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c0b0 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
1c0c0 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
1c0d0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
1c0e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c0f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c100 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c130 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c140 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1c150 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1c160 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1c170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c180 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1c190 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1c1a0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1c1b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c1c0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1c1d0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c1e0 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
1c1f0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1c200 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
1c210 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c220 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c230 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c260 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c270 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1c280 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1c290 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1c2a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c2b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1c2c0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1c2d0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1c2e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c2f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1c300 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1c310 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
1c320 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1c330 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
1c340 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
1c350 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
1c360 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
1c370 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
1c380 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c390 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c3a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c3b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c3c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c3d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c3e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c3f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c400 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c410 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c420 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c430 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1c440 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
1c450 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1c460 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
1c470 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c480 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c490 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c4a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c4b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c4c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c4d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c4e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c4f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c500 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c510 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c520 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1c530 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
1c540 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
1c550 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
1c560 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
1c570 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
1c580 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
1c590 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1c5a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c5b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c5c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1c5d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1c5e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c5f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1c600 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c610 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1c620 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1c630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c640 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
1c650 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
1c660 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c670 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c690 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c6a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c6b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c6c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c6d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c6e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c6f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c700 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1c710 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
1c720 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
1c730 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1c740 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c750 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c760 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c770 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c780 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c790 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c7a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c7b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c7c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c7d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c7e0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1c7f0 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
1c800 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
1c810 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
1c820 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
1c830 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
1c840 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
1c850 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c860 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c870 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c880 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c890 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c8a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c8b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c8c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c8d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c8e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c8f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1c900 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
1c910 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
1c920 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
1c930 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
1c940 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
1c950 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c970 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c990 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c9a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c9b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c9c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c9d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c9e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c9f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ca00 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ca10 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
1ca20 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
1ca30 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
1ca40 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1ca50 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1ca60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ca70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ca80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ca90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1caa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1cab0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1cac0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1cad0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cae0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1caf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1cb00 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1cb10 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
1cb20 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
1cb30 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
1cb40 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1cb50 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1cb60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1cb70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1cb80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cb90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1cba0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1cbb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cbc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1cbd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cbe0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1cbf0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cc00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cc10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1cc20 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
1cc30 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
1cc40 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1cc50 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
1cc60 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
1cc70 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
1cc80 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
1cc90 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
1cca0 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
1ccb0 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
1ccc0 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
1ccd0 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
1cce0 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
1ccf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cd00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cd10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1cd30 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1cd40 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
1cd50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1cd60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1cd70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1cd80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1cda0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1cdb0 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
1cdc0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cdd0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cde0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1cdf0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1ce00 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
1ce10 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
1ce20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ce30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ce40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ce50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1ce60 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1ce70 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1ce80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ce90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cea0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ceb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cec0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1ced0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1cee0 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1cef0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cf00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cf10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1cf20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
1cf30 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
1cf40 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
1cf50 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
1cf60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1cf70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1cf80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cf90 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1cfa0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1cfb0 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
1cfc0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1cfd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1cfe0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1cff0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d000 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1d010 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1d020 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1d030 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d040 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1d050 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1d060 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
1d070 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1d080 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
1d090 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1d0a0 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1d0b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d0c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d0d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d0e0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1d0f0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1d100 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
1d110 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d120 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d130 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d150 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1d160 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1d170 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
1d180 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d190 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d1a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d1b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
1d1c0 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74  onfig_int_refint
1d1d0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
1d1e0 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
1d1f0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c  m op, int value,
1d200 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29   ref int result)
1d210 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d220 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d230 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d260 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d270 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1d280 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1d290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d2a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1d2b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d2c0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d2d0 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f  ite3_rollback_ho
1d2e0 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
1d2f0 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c  LiteRollbackCall
1d300 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1d310 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1d320 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d330 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d340 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d350 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d360 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d380 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d390 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d3a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d3b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d3c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1d3d0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
1d3e0 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73  _handle(IntPtr s
1d3f0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1d400 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d410 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d430 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1d440 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1d450 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1d460 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1d470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d480 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1d490 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d4a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1d4b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1d4c0 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  3_db_release_mem
1d4d0 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ory(IntPtr db);.
1d4e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d4f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d500 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d510 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d520 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d530 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d540 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d550 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d570 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d580 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d590 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d5a0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49  e3_db_filename(I
1d5b0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1d5c0 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
1d5d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d5e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d5f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d600 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d610 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d620 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d630 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d650 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d660 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d670 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1d680 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61  t sqlite3_db_rea
1d690 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c  donly(IntPtr db,
1d6a0 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
1d6b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d6c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d6d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d6e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1d6f0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1d700 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
1d710 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1d720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d760 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1d770 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1d780 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66  ename")]..#endif
1d790 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d7a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1d7b0 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
1d7c0 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e  ilename_bytes(In
1d7d0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1d7e0 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
1d7f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d800 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d820 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d830 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d850 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d860 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d870 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d890 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1d8a0 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
1d8b0 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
1d8c0 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
1d8d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d8e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d8f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d900 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d910 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d930 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d940 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d960 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d970 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d980 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1d990 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
1d9a0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1d9b0 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
1d9c0 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
1d9d0 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66  Ptr pvParam, ref
1d9e0 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
1d9f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1da00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1da10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1da20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1da30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1da40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1da50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1da60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1da70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1da80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1da90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1daa0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1dab0 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
1dac0 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
1dad0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dae0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1daf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1db00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1db10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1db20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1db30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1db40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1db50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1db60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1db70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1db80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74   int sqlite3_get
1db90 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50  _autocommit(IntP
1dba0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1dbb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dbc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1dbd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dbe0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1dbf0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1dc00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1dc10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1dc20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dc30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1dc40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1dc50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1dc60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1dc70 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
1dc80 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72  ult_codes(IntPtr
1dc90 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b   db, int onoff);
1dca0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dcb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dcc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dcd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dcf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dd00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dd10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dd20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dd30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dd40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dd50 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1dd60 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72  Code sqlite3_err
1dd70 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
1dd80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dd90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dda0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ddb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ddc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ddd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dde0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ddf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1de00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1de10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1de20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1de30 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1de40 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
1de50 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e  ended_errcode(In
1de60 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1de70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1de80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1de90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1dea0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1deb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1dec0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ded0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1dee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1def0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1df00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1df10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1df20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
1df30 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43  str(SQLiteErrorC
1df40 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e  ode rc); /* 3.7.
1df50 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  15+ */....    //
1df60 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c   Since sqlite3_l
1df70 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  og() takes a var
1df80 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
1df90 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
1dfa0 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
1dfb0 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
1dfc0 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
1dfd0 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  alls.  For now, 
1dfe0 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f  we are only expo
1dff0 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74  sing a single st
1e000 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  ring, and..    /
1e010 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  / depend on the 
1e020 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74  caller to format
1e030 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69   the string...#i
1e040 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e050 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e070 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e080 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e090 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e0a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e0b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e0c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e0d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e0e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1e0f0 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  oid sqlite3_log(
1e100 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e110 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d  iErrCode, byte[]
1e120 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69   zFormat);....#i
1e130 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e140 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e150 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e160 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e170 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e180 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e190 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e1a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e1b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e1c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e1d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e1e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e1f0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
1e200 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rol(IntPtr db, b
1e210 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69  yte[] zDbName, i
1e220 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41  nt op, IntPtr pA
1e230 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  rg);....#if !PLA
1e240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e270 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e280 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e290 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e2a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e2b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e2c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e2d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e2e0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1e2f0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69  sqlite3_backup_i
1e300 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44  nit(IntPtr destD
1e310 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e  b, byte[] zDestN
1e320 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72  ame, IntPtr sour
1e330 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f  ceDb, byte[] zSo
1e340 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  urceName);....#i
1e350 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e360 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e370 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e380 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e390 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e3a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e3b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e3c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e3d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e3e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e3f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e400 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e410 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74  qlite3_backup_st
1e420 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ep(IntPtr backup
1e430 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d  , int nPage);...
1e440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e470 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e4a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e4b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e4c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e4d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e4e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e4f0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
1e500 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
1e510 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
1e520 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e530 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e540 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e550 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e570 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e580 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e590 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e5a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e5b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e5c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e5d0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
1e5e0 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
1e5f0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
1e600 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e610 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e620 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e630 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e650 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e660 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e670 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e680 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e690 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e6a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e6b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e6c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
1e6d0 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c  _close(IntPtr bl
1e6e0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
1e6f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e700 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e720 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e730 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e740 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e750 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e760 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e770 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e780 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e790 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e7a0 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28  ite3_blob_bytes(
1e7b0 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
1e7c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e7d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e7e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e7f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e800 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e820 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e840 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e850 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e860 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e870 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1e880 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f  e sqlite3_blob_o
1e890 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  pen(IntPtr db, b
1e8a0 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
1e8b0 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
1e8c0 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f  te[] colName, lo
1e8d0 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c  ng rowId, int fl
1e8e0 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ags, ref IntPtr 
1e8f0 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  ptrBlob);....#if
1e900 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e910 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e920 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e930 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e940 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e950 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e960 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e970 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e980 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e990 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e9a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1e9b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1e9c0 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28  lite3_blob_read(
1e9d0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1e9e0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1e9f0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1ea00 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1ea10 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1ea20 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1ea30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ea40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ea50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ea60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ea70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ea80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ea90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1eaa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eab0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1eac0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ead0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1eae0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1eaf0 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49  e3_blob_reopen(I
1eb00 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67  ntPtr blob, long
1eb10 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20   rowId);....#if 
1eb20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1eb30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1eb40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1eb50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1eb60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1eb70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1eb80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1eb90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eba0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ebb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ebc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ebd0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1ebe0 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28  ite3_blob_write(
1ebf0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
1ec00 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
1ec10 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
1ec20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
1ec30 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
1ec40 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
1ec50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ec60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ec70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ec80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ec90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1eca0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ecb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ecc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ecd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ece0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ecf0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1ed00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1ed10 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
1ed20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1ed30 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20  r zSQL);....#if 
1ed40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ed50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ed60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ed70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ed80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ed90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1eda0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1edb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1edc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1edd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ede0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1edf0 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  Ptr sqlite3_mpri
1ee00 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61  ntf(IntPtr forma
1ee10 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a  t, __arglist);..
1ee20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1ee30 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20  ..    // SQLite 
1ee40 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61  API calls that a
1ee50 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22  re provided by "
1ee60 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65  well-known" exte
1ee70 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20  nsions that may 
1ee80 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20  be statically.. 
1ee90 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74     // linked wit
1eea0 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1eeb0 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
1eec0 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
1eed0 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  e...    #region 
1eee0 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65  extension sqlite
1eef0 20 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20   api calls..    
1ef00 23 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c 20  #region virtual 
1ef10 74 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52  table..#if INTER
1ef20 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
1ef30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ef40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ef50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ef60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ef70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ef80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ef90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1efa0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1efb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1efc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1efd0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1efe0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1eff0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
1f000 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ble_module(IntPt
1f010 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
1f020 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d  e, ref sqlite3_m
1f030 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e  odule module, In
1f040 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
1f050 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  , xDestroyModule
1f060 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23   xDestroy);....#
1f070 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f080 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f090 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f0a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f0b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f0c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f0d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f0e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f0f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f100 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f110 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f120 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73  void sqlite3_dis
1f130 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  pose_module(IntP
1f140 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65  tr pModule);..#e
1f150 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
1f160 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1f1c0 72 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65  region session e
1f1d0 78 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e  xtension..#if IN
1f1e0 54 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58  TEROP_SESSION_EX
1f1f0 54 45 4e 53 49 4f 4e 0d 0a 20 20 20 20 69 6e 74  TENSION..    int
1f200 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 69  ernal delegate i
1f210 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  nt xSessionFilte
1f220 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  r(IntPtr context
1f230 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1f240 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
1f250 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1f260 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63  ChangeSetConflic
1f270 74 52 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e  tResult xSession
1f280 43 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20  Conflict(IntPtr 
1f290 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43  context, SQLiteC
1f2a0 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
1f2b0 54 79 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74  Type type, IntPt
1f2c0 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 20 20  r iterator);..  
1f2d0 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
1f2e0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1f2f0 6f 64 65 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  ode xSessionInpu
1f300 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1f310 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20  , IntPtr pData, 
1f320 72 65 66 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d  ref int nData);.
1f330 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65  .    internal de
1f340 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1f350 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 4f  orCode xSessionO
1f360 75 74 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e  utput(IntPtr con
1f370 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61  text, IntPtr pDa
1f380 74 61 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d  ta, int nData);.
1f390 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3e0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1f3f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f400 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f410 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f420 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f430 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f440 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f450 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f460 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f470 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f480 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f490 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f4a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65  orCode sqlite3se
1f4b0 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 49 6e 74  ssion_create(Int
1f4c0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
1f4d0 62 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  bName, ref IntPt
1f4e0 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23  r session);....#
1f4f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f500 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f510 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f520 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f530 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f540 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f550 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f570 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f580 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f590 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f5a0 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73 73  void sqlite3sess
1f5b0 69 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74 50 74  ion_delete(IntPt
1f5c0 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23  r session);....#
1f5d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f5e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f5f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f600 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f610 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f620 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f630 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f640 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f650 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f660 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f670 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f680 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69  int sqlite3sessi
1f690 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50 74 72  on_enable(IntPtr
1f6a0 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 65 6e   session, int en
1f6b0 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
1f6c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f6d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f6e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f6f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f700 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f710 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f720 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f730 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f740 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f750 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f760 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1f770 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 6e  qlite3session_in
1f780 64 69 72 65 63 74 28 49 6e 74 50 74 72 20 73 65  direct(IntPtr se
1f790 73 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64 69 72  ssion, int indir
1f7a0 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ect);....#if !PL
1f7b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f7c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f7d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f7e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f7f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f800 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f810 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f830 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f850 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f860 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f870 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63 68 28  3session_attach(
1f880 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
1f890 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 29 3b  byte[] tblName);
1f8a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f8b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f8c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f8d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f8e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f8f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f900 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f910 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f920 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f930 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f940 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f950 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1f960 33 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65 5f 66  3session_table_f
1f970 69 6c 74 65 72 28 49 6e 74 50 74 72 20 73 65 73  ilter(IntPtr ses
1f980 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69  sion, xSessionFi
1f990 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 49 6e  lter xFilter, In
1f9a0 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
1f9b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f9c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f9d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f9e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f9f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1fa00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1fa10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1fa20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1fa30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1fa40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1fa50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1fa60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1fa70 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
1fa80 6e 5f 63 68 61 6e 67 65 73 65 74 28 49 6e 74 50  n_changeset(IntP
1fa90 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20  tr session, ref 
1faa0 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20  int nChangeSet, 
1fab0 72 65 66 20 49 6e 74 50 74 72 20 70 43 68 61 6e  ref IntPtr pChan
1fac0 67 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20 21 50  geSet);...#if !P
1fad0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fae0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1faf0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fb00 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1fb10 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1fb20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1fb30 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1fb40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fb50 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1fb60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fb70 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1fb80 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1fb90 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28 49  e3session_diff(I
1fba0 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 62  ntPtr session, b
1fbb0 79 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61 6d 65  yte[] fromDbName
1fbc0 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1fbd0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72  , ref IntPtr err
1fbe0 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Msg);....#if !PL
1fbf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fc00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1fc10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fc20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1fc30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1fc40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1fc50 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1fc60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fc70 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1fc80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1fc90 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1fca0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1fcb0 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65  3session_patchse
1fcc0 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  t(IntPtr session
1fcd0 2c 20 72 65 66 20 69 6e 74 20 6e 50 61 74 63 68  , ref int nPatch
1fce0 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  Set, ref IntPtr 
1fcf0 70 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d 0a 23  pPatchSet);....#
1fd00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fd10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fd20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fd30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1fd40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fd50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fd60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1fd70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fd80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1fd90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fda0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fdb0 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69  int sqlite3sessi
1fdc0 6f 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74 50 74  on_isempty(IntPt
1fdd0 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23  r session);....#
1fde0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fdf0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fe00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fe10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1fe20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fe30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fe40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1fe50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fe60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1fe70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fe80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fe90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1fea0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
1feb0 5f 73 74 61 72 74 28 72 65 66 20 49 6e 74 50 74  _start(ref IntPt
1fec0 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20  r iterator, int 
1fed0 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74 50  nChangeSet, IntP
1fee0 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b 0d  tr pChangeSet);.
1fef0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ff00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ff10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ff20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ff30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ff40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ff50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ff60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ff70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ff80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ff90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ffa0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ffb0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
1ffc0 65 73 65 74 5f 6e 65 78 74 28 49 6e 74 50 74 72  eset_next(IntPtr
1ffd0 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23   iterator);....#
1ffe0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fff0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20010 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20020 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20030 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20040 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20050 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20060 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20070 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20080 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20090 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
200a0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
200b0 5f 6f 70 28 49 6e 74 50 74 72 20 69 74 65 72 61  _op(IntPtr itera
200c0 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tor, ref IntPtr 
200d0 70 54 62 6c 4e 61 6d 65 2c 20 72 65 66 20 69 6e  pTblName, ref in
200e0 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65 66 20  t nColumns, ref 
200f0 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
20100 41 63 74 69 6f 6e 43 6f 64 65 20 70 4f 70 2c 20  ActionCode pOp, 
20110 72 65 66 20 69 6e 74 20 62 49 6e 64 69 72 65 63  ref int bIndirec
20120 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
20130 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20140 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20150 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20160 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20170 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20180 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20190 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
201a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
201b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
201c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
201d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
201e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
201f0 68 61 6e 67 65 73 65 74 5f 70 6b 28 49 6e 74 50  hangeset_pk(IntP
20200 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66  tr iterator, ref
20210 20 49 6e 74 50 74 72 20 70 62 50 72 69 6d 61 72   IntPtr pbPrimar
20220 79 4b 65 79 73 2c 20 72 65 66 20 69 6e 74 20 6e  yKeys, ref int n
20230 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23 69 66  Columns);....#if
20240 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20250 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20270 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20280 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
202a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
202b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
202c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
202d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
202e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
202f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20300 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f  lite3changeset_o
20310 6c 64 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  ld(IntPtr iterat
20320 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e  or, int columnIn
20330 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20  dex, ref IntPtr 
20340 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20  pValue);....#if 
20350 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20380 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20390 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
203a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
203b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
203c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
203d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
203e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
203f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20400 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
20410 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65  ite3changeset_ne
20420 77 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  w(IntPtr iterato
20430 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64  r, int columnInd
20440 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ex, ref IntPtr p
20450 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  Value);....#if !
20460 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20470 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
20480 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20490 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
204a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
204b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
204c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
204d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
204e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
204f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20500 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20510 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20520 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e  te3changeset_con
20530 66 6c 69 63 74 28 49 6e 74 50 74 72 20 69 74 65  flict(IntPtr ite
20540 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d  rator, int colum
20550 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50  nIndex, ref IntP
20560 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23  tr pValue);....#
20570 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20580 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20590 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
205a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
205b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
205c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
205d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
205e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
205f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20600 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20610 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20620 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20630 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
20640 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28 49 6e  _fk_conflicts(In
20650 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72  tPtr iterator, r
20660 65 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73  ef int conflicts
20670 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20680 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20690 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
206a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
206b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
206c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
206d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
206e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
206f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20700 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20710 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20720 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20730 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
20740 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65  angeset_finalize
20750 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
20760 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20770 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20780 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
207a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
207b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
207c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
207d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
207e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
207f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20800 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20810 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20820 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
20830 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 28 69  angeset_invert(i
20840 6e 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72 20 70  nt nIn, IntPtr p
20850 49 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75 74  In, ref int nOut
20860 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f 75  , ref IntPtr pOu
20870 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
20880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20890 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
208a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
208b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
208c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
208d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
208e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
208f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20900 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20910 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20920 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
20930 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
20940 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 28  hangeset_concat(
20950 69 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72 20 70  int nA, IntPtr p
20960 41 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74 50 74  A, int nB, IntPt
20970 72 20 70 42 2c 20 72 65 66 20 69 6e 74 20 6e 4f  r pB, ref int nO
20980 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ut, ref IntPtr p
20990 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
209a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
209b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
209c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
209d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
209e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
209f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20a00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20a10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20a20 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20a30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20a40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
20a50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
20a60 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e 65 77  3changegroup_new
20a70 28 72 65 66 20 49 6e 74 50 74 72 20 63 68 61 6e  (ref IntPtr chan
20a80 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66  geGroup);....#if
20a90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20aa0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20ab0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20ac0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20ad0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20ae0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20af0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20b00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20b10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20b20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20b30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20b40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20b50 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
20b60 5f 61 64 64 28 49 6e 74 50 74 72 20 63 68 61 6e  _add(IntPtr chan
20b70 67 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e 44 61  geGroup, int nDa
20b80 74 61 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61  ta, IntPtr pData
20b90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20ba0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20bb0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20bc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20bd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20be0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20bf0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20c00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20c10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20c30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20c40 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20c50 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
20c60 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74  angegroup_output
20c70 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
20c80 6f 75 70 2c 20 72 65 66 20 69 6e 74 20 6e 44 61  oup, ref int nDa
20c90 74 61 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ta, ref IntPtr p
20ca0 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Data);....#if !P
20cb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20cc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20cd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20ce0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20cf0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20d00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20d10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20d20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20d30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20d40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20d50 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
20d60 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
20d70 75 70 5f 64 65 6c 65 74 65 28 49 6e 74 50 74 72  up_delete(IntPtr
20d80 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a   changeGroup);..
20d90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20da0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20db0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20dc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20dd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20de0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20df0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20e00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20e10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20e20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20e30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20e40 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
20e50 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
20e60 73 65 74 5f 61 70 70 6c 79 28 49 6e 74 50 74 72  set_apply(IntPtr
20e70 20 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65   db, int nChange
20e80 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61  Set, IntPtr pCha
20e90 6e 67 65 53 65 74 2c 20 78 53 65 73 73 69 6f 6e  ngeSet, xSession
20ea0 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20  Filter xFilter, 
20eb0 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74  xSessionConflict
20ec0 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50   xConflict, IntP
20ed0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
20ee0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20ef0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20f00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20f10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20f20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20f30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20f40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20f50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20f60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20f70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20f80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20f90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
20fa0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
20fb0 74 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49 6e 74  t_apply_strm(Int
20fc0 50 74 72 20 64 62 2c 20 78 53 65 73 73 69 6f 6e  Ptr db, xSession
20fd0 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e  Input xInput, In
20fe0 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69  tPtr pIn, xSessi
20ff0 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72  onFilter xFilter
21000 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69  , xSessionConfli
21010 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e  ct xConflict, In
21020 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
21030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
210a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
210b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
210c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
210d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
210e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
210f0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
21100 73 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72 6d 28  set_concat_strm(
21110 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
21120 6e 70 75 74 41 2c 20 49 6e 74 50 74 72 20 70 49  nputA, IntPtr pI
21130 6e 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  nA, xSessionInpu
21140 74 20 78 49 6e 70 75 74 42 2c 20 49 6e 74 50 74  t xInputB, IntPt
21150 72 20 70 49 6e 42 2c 20 78 53 65 73 73 69 6f 6e  r pInB, xSession
21160 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
21170 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
21180 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21190 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
211a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
211b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
211c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
211d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
211e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
211f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21200 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21210 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21220 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21230 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21240 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
21250 65 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d 28 78  et_invert_strm(x
21260 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
21270 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c  put, IntPtr pIn,
21280 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
21290 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
212a0 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
212b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
212c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
212d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
212e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
212f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21300 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21310 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21330 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21370 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72  e3changeset_star
21380 74 5f 73 74 72 6d 28 72 65 66 20 49 6e 74 50 74  t_strm(ref IntPt
21390 72 20 69 74 65 72 61 74 6f 72 2c 20 78 53 65 73  r iterator, xSes
213a0 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
213b0 2c 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a  , IntPtr pIn);..
213c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
213d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
213e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
213f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21400 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21410 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21420 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21430 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21440 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21450 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21460 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21470 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21480 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
21490 6e 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d  n_changeset_strm
214a0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
214b0 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
214c0 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
214d0 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
214e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
214f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21500 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21510 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21520 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21530 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21540 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21560 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21580 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21590 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
215a0 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
215b0 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73  et_strm(IntPtr s
215c0 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
215d0 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
215e0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
215f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21600 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21610 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21620 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21630 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21640 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21650 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21660 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21670 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21680 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21690 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
216a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
216b0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
216c0 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e  roup_add_strm(In
216d0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
216e0 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
216f0 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
21700 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  In);....#if !PLA
21710 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21720 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21730 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21740 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21750 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21760 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21770 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21780 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21790 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
217a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
217b0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
217c0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
217d0 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70  changegroup_outp
217e0 75 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63  ut_strm(IntPtr c
217f0 68 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73  hangeGroup, xSes
21800 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
21810 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
21820 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
21830 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23  endregion..    #
21840 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
21850 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
218a0 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69      #region sqli
218b0 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63  te interop api c
218c0 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61  alls (.NET Compa
218d0 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c  ct Framework onl
218e0 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  y)..#if PLATFORM
218f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21900 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
21910 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49  NDARD..    [DllI
21920 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21930 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
21940 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
21950 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  oid sqlite3_last
21960 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e  _insert_rowid_in
21970 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
21980 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29   ref long rowId)
21990 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
219a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
219b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
219c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
219d0 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
219e0 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65  _used_interop(re
219f0 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
21a00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21a10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
21a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21a30 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
21a40 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
21a50 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28  ghwater_interop(
21a60 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72  int resetFlag, r
21a70 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
21a80 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
21a90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21aa0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21ab0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21ac0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21ad0 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69  e3_bind_double_i
21ae0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
21af0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
21b00 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
21b10 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
21b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21b30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21b40 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
21b50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
21b60 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
21b70 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
21b80 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
21b90 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
21ba0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
21bb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
21bc0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
21bd0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
21be0 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20  interop")]..    
21bf0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21c00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21c10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
21c20 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72  ind_uint64_inter
21c30 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
21c40 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75  int index, ref u
21c50 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
21c60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21c70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
21c80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21c90 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
21ca0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
21cb0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
21cc0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
21cd0 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
21ce0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
21cf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21d00 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
21d10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21d20 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
21d30 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72  lumn_int64_inter
21d40 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
21d50 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
21d60 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
21d70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21d80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
21d90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21da0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
21db0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
21dc0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
21dd0 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  p, ref double va
21de0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
21df0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21e00 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
21e10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21e20 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
21e30 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
21e40 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
21e50 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
21e60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21e70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
21e80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21e90 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
21ea0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
21eb0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
21ec0 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
21ed0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
21ee0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21ef0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
21f00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21f10 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
21f20 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
21f30 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
21f40 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
21f50 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
21f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21f70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
21f80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21f90 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
21fa0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
21fb0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
21fc0 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20  _interop(..     
21fd0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e     IntPtr db, In
21fe0 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74  tPtr name, IntPt
21ff0 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69  r pModule, int i
22000 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65  Version, xCreate
22010 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20   xCreate,..     
22020 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e     xConnect xCon
22030 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78  nect, xBestIndex
22040 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69   xBestIndex, xDi
22050 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
22060 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  nect,..        x
22070 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
22080 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78  , xOpen xOpen, x
22090 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46  Close xClose, xF
220a0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a  ilter xFilter,..
220b0 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e          xNext xN
220c0 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20  ext, xEof xEof, 
220d0 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c  xColumn xColumn,
220e0 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20   xRowId xRowId, 
220f0 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c  xUpdate xUpdate,
22100 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e  ..        xBegin
22110 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78   xBegin, xSync x
22120 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43  Sync, xCommit xC
22130 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b  ommit, xRollback
22140 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20   xRollback,..   
22150 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
22160 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
22170 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  , xRename xRenam
22180 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  e, xSavepoint xS
22190 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20  avepoint,..     
221a0 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c     xRelease xRel
221b0 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54  ease, xRollbackT
221c0 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  o xRollbackTo, I
221d0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
221e0 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  a,..        xDes
221f0 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
22200 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  royModule);..#en
22210 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54  dif..    // PLAT
22220 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22230 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
22240 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23  _STANDARD..    #
22250 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
22260 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
222b0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
222c0 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69  ve Delegates..#i
222d0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
222e0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
222f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22300 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
22310 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
22320 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
22330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22340 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
22350 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
22360 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
22370 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
22380 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
22390 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
223a0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
223b0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
223c0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
223d0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
223e0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
223f0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
22400 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
22410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
22460 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22470 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22480 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
22490 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
224a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
224b0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
224c0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
224d0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
224e0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
224f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
22500 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
22510 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
22520 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
22530 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
22540 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
22550 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
22560 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
22570 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
22580 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
22590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225d0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
225e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
225f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
22600 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
22610 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
22620 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22630 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
22640 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
22650 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
22660 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
22670 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
22680 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
22690 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
226a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
226b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
226f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22700 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22710 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
22720 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
22730 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
22740 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
22750 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
22760 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
22770 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
22780 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
22790 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
227a0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
227b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
22800 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22810 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
22820 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
22830 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
22840 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22850 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
22860 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
22870 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
22880 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
22890 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
228a0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
228b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
22900 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22910 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22920 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
22930 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
22940 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22950 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
22960 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
22970 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22980 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
22990 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
229a0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
229b0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
229c0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
229d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
229f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a10 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
22a20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22a30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
22a40 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
22a50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
22a60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22a70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
22a80 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
22a90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
22aa0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  lose(..        I
22ab0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
22ac0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
22ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
22b20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22b30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22b40 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
22b50 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
22b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22b70 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
22b80 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
22b90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22ba0 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20   xFilter(..     
22bb0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
22bc0 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
22bd0 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
22be0 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
22bf0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
22c00 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
22c10 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d  tr argv..    );.
22c20 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
22c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c70 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
22c80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22c90 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
22ca0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
22cb0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
22cc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22cd0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
22ce0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
22cf0 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
22d00 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
22d10 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
22d20 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
22d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d70 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
22d80 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22d90 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
22da0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
22db0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
22dc0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22dd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
22de0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
22df0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
22e00 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
22e10 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
22e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
22e70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22e80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22e90 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
22ea0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
22eb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22ec0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
22ed0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
22ee0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
22ef0 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  e xColumn(..    
22f00 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
22f10 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  or,..        Int
22f20 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
22f30 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
22f40 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
22f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
22fa0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22fb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22fc0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
22fd0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
22fe0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22ff0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23000 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
23010 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
23020 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
23030 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
23040 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  sor,..        re
23050 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
23060 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
23070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23080 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
230c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
230d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
230e0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
230f0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
23100 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23110 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23120 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
23130 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23140 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
23150 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
23160 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
23170 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
23180 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
23190 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
231a0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f  ////////////////
231f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
23200 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23210 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23220 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
23230 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
23240 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23250 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23260 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
23270 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
23280 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
23290 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
232a0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
232b0 20 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 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23300 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23310 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23320 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
23330 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
23340 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23350 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
23360 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
23370 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
23380 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20  Code xSync(..   
23390 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
233a0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
233b0 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23400 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23410 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23420 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
23430 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
23440 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23450 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
23460 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
23470 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
23480 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
23490 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
234a0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
234b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
234c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
23500 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23510 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23520 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
23530 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
23540 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23550 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
23560 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
23570 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
23580 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
23590 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
235a0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
235b0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
235c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
23610 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23620 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
23630 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
23640 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
23650 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23660 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
23670 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
23680 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
23690 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
236a0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
236b0 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
236c0 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
236d0 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
236e0 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
236f0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ack,..        re
23700 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61  f IntPtr pUserDa
23710 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ta..    );....  
23720 20 20 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
23770 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23780 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23790 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
237a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
237b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
237c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
237d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
237e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
237f0 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
23800 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
23810 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
23820 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
23830 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23880 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
23890 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
238a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
238b0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
238c0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
238d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
238e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
238f0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
23900 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
23910 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
23920 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
23930 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
23940 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
23950 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
23960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
239b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
239c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
239d0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
239e0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
239f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23a00 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
23a10 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
23a20 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c  teErrorCode xRel
23a30 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  ease(..        I
23a40 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
23a50 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
23a60 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
23a70 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
23aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23ac0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23ad0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23ae0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
23af0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
23b00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
23b10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
23b20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
23b30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
23b40 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
23b50 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  kTo(..        In
23b60 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
23b70 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
23b80 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
23b90 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23be0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23bf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23c00 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
23c10 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
23c20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23c30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
23c40 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
23c50 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
23c60 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
23c70 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
23c80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
23c90 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
23ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
23cf0 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
23d00 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66   Structures..#if
23d10 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
23d20 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72  _TABLE..    [Str
23d30 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
23d40 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
23d50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
23d60 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
23d70 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
23d80 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
23d90 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20   iVersion;..    
23da0 20 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61      public xCrea
23db0 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20  te xCreate;..   
23dc0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e       public xCon
23dd0 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a  nect xConnect;..
23de0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
23df0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
23e00 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70  ndex;..        p
23e10 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63  ublic xDisconnec
23e20 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a  t xDisconnect;..
23e30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
23e40 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
23e50 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
23e60 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a  c xOpen xOpen;..
23e70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
23e80 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20  Close xClose;.. 
23e90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
23ea0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a  ilter xFilter;..
23eb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
23ec0 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20  Next xNext;..   
23ed0 20 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66       public xEof
23ee0 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20   xEof;..        
23ef0 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
23f00 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
23f10 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78   public xRowId x
23f20 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20  RowId;..        
23f30 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
23f40 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
23f50 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78   public xBegin x
23f60 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20  Begin;..        
23f70 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79  public xSync xSy
23f80 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nc;..        pub
23f90 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  lic xCommit xCom
23fa0 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  mit;..        pu
23fb0 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78  blic xRollback x
23fc0 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20  Rollback;..     
23fd0 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46     public xFindF
23fe0 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
23ff0 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  ction;..        
24000 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
24010 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
24020 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
24030 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
24040 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
24050 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
24060 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
24070 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
24080 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
24090 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
240a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
240b0 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
240c0 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  point;..        
240d0 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
240e0 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
240f0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
24100 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
24110 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  o;..    }....   
24120 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
24130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24170 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
24180 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
24190 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
241a0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
241b0 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20  qlite3_vtab..   
241c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
241d0 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  ic IntPtr pModul
241e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
241f0 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
24200 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
24210 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
24220 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
24230 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
24240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24290 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
242a0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
242b0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
242c0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
242d0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
242e0 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
242f0 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
24300 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  pVTab;..    }...
24310 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
24320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24330 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
24370 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
24380 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
24390 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
243a0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
243b0 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  _constraint..   
243c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
243d0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
243e0 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  _constraint(..  
243f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
24400 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20  IndexConstraint 
24410 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
24420 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
24430 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
24440 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
24450 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
24460 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  traint != null).
24470 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24490 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72  iColumn = constr
244a0 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  aint.iColumn;.. 
244b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
244c0 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  p = constraint.o
244d0 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
244e0 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e      usable = con
244f0 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d  straint.usable;.
24500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24510 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63   iTermOffset = c
24520 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
24530 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
24540 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
24550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24570 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
245b0 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
245c0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
245d0 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
245e0 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
245f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
24600 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
24610 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
24620 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
24630 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
24640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24680 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
24690 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
246a0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
246b0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
246c0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
246d0 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a  _index_orderby..
246e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
246f0 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
24700 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20  dex_orderby(..  
24710 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
24720 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64  IndexOrderBy ord
24730 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
24740 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
24750 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
24760 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24770 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d    if (orderBy !=
24780 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
24790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
247a0 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
247b0 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e   orderBy.iColumn
247c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
247d0 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42     desc = orderB
247e0 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  y.desc;..       
247f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24800 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
24810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24850 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24860 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
24870 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
24880 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
24890 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
248a0 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
248b0 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
248c0 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d  r ASC. */..    }
248d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
248e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24920 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
24930 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
24940 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
24950 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24960 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
24970 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
24980 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sage..    {..   
24990 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
249a0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
249b0 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
249c0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
249d0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
249e0 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
249f0 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
24a00 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
24a10 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
24a20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24a30 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
24a40 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sage != null).. 
24a50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
24a70 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72  gvIndex = constr
24a80 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e  aintUsage.argvIn
24a90 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
24aa0 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e        omit = con
24ab0 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
24ac0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
24ad0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
24ae0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24b30 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
24b40 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
24b50 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74   /* if >0, const
24b60 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
24b70 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
24b80 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
24b90 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20  lic byte omit;  
24ba0 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
24bb0 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
24bc0 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d  s constraint */.
24bd0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
24be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24c30 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
24c40 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
24c50 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
24c60 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
24c70 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
24c80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
24c90 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
24ca0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
24cb0 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20  nConstraint; /* 
24cc0 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
24cd0 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  s in aConstraint
24ce0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
24cf0 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
24d00 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  traint;..       
24d10 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64   public int nOrd
24d20 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62  erBy;    /* Numb
24d30 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
24d40 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20   aOrderBy */..  
24d50 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
24d60 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
24d70 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
24d80 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
24d90 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
24da0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
24db0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
24dc0 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
24dd0 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
24de0 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
24df0 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
24e00 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
24e10 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
24e20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
24e30 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
24e40 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
24e50 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
24e60 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
24e70 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
24e80 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
24e90 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
24ea0 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
24eb0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
24ec0 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
24ed0 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
24ee0 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
24ef0 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
24f00 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
24f10 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
24f20 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
24f30 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
24f40 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
24f50 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
24f60 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
24f70 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
24f80 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
24f90 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
24fa0 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
24fb0 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b  xFlags idxFlags;
24fc0 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49   /* Mask of SQLI
24fd0 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20  TE_INDEX_SCAN_* 
24fe0 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20  flags */..      
24ff0 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f    public long co
25000 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f  lUsed;         /
25010 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66  * Input: Mask of
25020 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79   columns used by
25030 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20   statement */.. 
25040 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
25050 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
25060 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
25070 0a 0d 0a 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250c0 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
250d0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
250e0 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72  mework (only) Cr
250f0 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61  iticalHandle Cla
25100 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ss..#if PLATFORM
25110 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25120 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  K..  internal ab
25130 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69  stract class Cri
25140 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44  ticalHandle : ID
25150 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
25160 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
25170 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20   _isClosed;..   
25180 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74   protected IntPt
25190 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  r handle;....   
251a0 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
251b0 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
251c0 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
251d0 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
251e0 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
251f0 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
25200 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
25210 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
25220 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
25230 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
25240 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
25250 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
25260 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
25270 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
25280 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
25290 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
252a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
252b0 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
252c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
252d0 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
252e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
252f0 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
25300 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
25310 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
25320 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
25330 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
25340 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
25350 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
25360 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
25370 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
25380 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
25390 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
253a0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
253b0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
253c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
253d0 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
253e0 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
253f0 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
25400 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
25410 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
25420 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
25430 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
25440 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
25450 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
25460 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
25470 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
25480 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
25490 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
254a0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
254b0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
254c0 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
254d0 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
254e0 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
254f0 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
25500 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
25510 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
25520 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
25530 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
25540 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
25550 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
25560 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
25570 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
25580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
25590 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
255a0 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
255b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
255c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255e0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
25610 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
25620 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43  nnectionHandle C
25630 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e  lass..    // Han
25640 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67  dles the unmanag
25650 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e  ed database poin
25660 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65  ter, and provide
25670 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a  s finalization..
25680 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66      // support f
25690 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65  or it...    inte
256a0 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
256b0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
256c0 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  onHandle : Criti
256d0 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
256e0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
256f0 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f  NDARD && !PLATFO
25700 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25710 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
25720 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76  ernal delegate v
25730 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
25740 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  ionCallback(..  
25750 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
25760 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
25770 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29   hdl, IntPtr db)
25780 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
25790 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f  ernal static Clo
257a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
257b0 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63  back closeConnec
257c0 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
257d0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
257e0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d  loseConnection;.
257f0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
25800 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
25850 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
25860 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25870 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
25880 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
25890 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
258a0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
258b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
258c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25900 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
25910 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e  vate bool ownHan
25920 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dle;....        
25930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25970 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
25980 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
25990 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
259a0 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
259b0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
259c0 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d   db)..        {.
259d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
259e0 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  (db != null)..  
259f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
25a00 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
25a10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25a20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
25a30 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a   (db.syncRoot)..
25a40 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
25a50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25a70 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
25a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25a90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
25aa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25ab0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
25ac0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
25ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
25ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
25b30 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e  ernal SQLiteConn
25b40 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
25b50 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e  Ptr db, bool own
25b60 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
25b70 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48       : this(ownH
25b80 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
25b90 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
25ba0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
25bc0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
25bd0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
25be0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25bf0 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61        this.ownHa
25c00 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65  ndle = ownHandle
25c10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
25c20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
25c30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
25c40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
25c50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
25c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25ca0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
25cb0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
25cc0 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77  onHandle(bool ow
25cd0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
25ce0 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
25cf0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
25d00 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
25d10 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
25d20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c      if (ownHandl
25d30 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
25d40 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
25d50 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
25d60 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
25d70 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
25d80 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
25d90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
25da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25de0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
25df0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
25e00 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
25e10 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
25e20 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
25e30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25e40 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
25e50 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
25e60 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
25e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e80 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
25e90 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
25ea0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
25eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
25ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25ed0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25ee0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f00 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
25f10 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
25f20 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
25f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f40 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
25f50 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
25f60 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
25f70 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
25f80 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
25f90 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
25fa0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
25fb0 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
25fc0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
25fd0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
25fe0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
25ff0 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
26000 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
26010 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
26020 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
26030 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
26040 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
26050 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
26060 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
26070 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
26080 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
26090 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
260a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
260b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260c0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
260d0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
260e0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
260f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26100 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
26110 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
26120 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
26130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
26140 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
26150 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
26160 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
26170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26180 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
26190 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
261a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
261b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
261c0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
261d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
261e0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
261f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26210 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
26220 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
26230 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
26240 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
26250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26260 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
26270 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
26280 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
26290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262a0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
262b0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
262c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
262e0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
262f0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
26300 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
26310 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
26320 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
26330 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
26340 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
26350 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
26360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26370 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
26380 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
26390 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
263a0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
263b0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
263c0 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
263d0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
263e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
263f0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
26400 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
26410 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
26420 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
26430 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
26440 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
26450 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
26460 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26480 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
26490 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
264a0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
264b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264c0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
264d0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
264e0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
264f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
26500 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
26510 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
26520 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
26530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
26540 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
26550 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
26560 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
26570 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
26580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26590 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
265a0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
265b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
265c0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
265d0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
265e0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
265f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26610 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
26620 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
26630 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26650 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
26660 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
26670 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26680 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
26690 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
266a0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
266b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
266c0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
266d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
266e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
266f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26730 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
26740 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
26750 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
26760 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
26770 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26780 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
26790 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
267a0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
267b0 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
267c0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
267d0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
267e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
267f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26820 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26830 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
26840 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20   OwnHandle..    
26850 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26860 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
26870 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
26880 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26890 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
268a0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
268b0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
268c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
268d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
268e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e        return own
268f0 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
26900 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
26920 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26970 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26980 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
26990 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
269a0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
269b0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
269c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
269d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
269e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
269f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
26a00 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
26a10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
26a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26a30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26a40 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
26a50 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26a80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26a90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26ae0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
26af0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
26b00 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
26b10 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
26b20 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
26b30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26b40 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
26b50 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
26b60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
26b70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26b80 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
26b90 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
26ba0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
26bb0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
26bc0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
26bd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
26be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26c30 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
26c40 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43  tatementHandle C
26c50 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
26c60 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
26c70 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
26c80 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
26c90 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20  statements...   
26ca0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
26cb0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61   class SQLiteSta
26cc0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43  tementHandle : C
26cd0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
26ce0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
26cf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26d00 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
26d10 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
26d20 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
26d30 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
26d40 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
26d50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
26da0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
26db0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
26dc0 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
26dd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26e20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
26e30 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
26e40 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
26e50 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
26e60 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  dle stmt)..     
26e70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26e80 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75    if (stmt != nu
26e90 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26ea0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
26eb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26ec0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
26ed0 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79     lock (stmt.sy
26ee0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
26ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26f00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26f10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
26f20 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  tmt.handle;..   
26f30 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26f40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26f50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26f60 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
26f70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26f80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26fd0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
26fe0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
26ff0 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
27000 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
27010 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d  n, IntPtr stmt).
27020 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
27030 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
27040 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
27050 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27060 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
27070 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
27080 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
27090 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
270a0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
270b0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
270c0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
270d0 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  stmt);..        
270e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
270f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
27100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27140 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
27150 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61  rivate SQLiteSta
27160 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a  tementHandle()..
27170 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
27180 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
27190 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
271a0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
271b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
271c0 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
271d0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
271e0 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
271f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
27200 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27250 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27260 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
27270 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
27280 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
27290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
272a0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
272b0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
272c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
272d0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
272e0 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
272f0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
27300 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
27310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27320 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
27330 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
27340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27350 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
27360 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
27370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27380 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
27390 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
273a0 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
273b0 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
273c0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
273d0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
273e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
273f0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
27400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27410 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
27420 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
27430 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
27440 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
27450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
27460 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
27470 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
27480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27490 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
274a0 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
274b0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
274c0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
274d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
274e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
274f0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
27500 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27510 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
27520 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
27530 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
27540 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
27550 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27570 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
27580 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
27590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
275b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
275c0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
275d0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
275e0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
275f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27600 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
27610 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
27620 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
27630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27640 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
27650 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
27660 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
27670 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
27680 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
27690 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
276a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
276b0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
276c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
276d0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
276e0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
276f0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
27700 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
27710 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
27720 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
27730 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
27740 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
27750 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
27760 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
27770 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
27780 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
27790 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
277b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
277c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
277d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
277e0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
277f0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
27800 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
27810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27820 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
27830 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
27840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27850 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
27860 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
27870 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
27880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27890 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
278a0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
278b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
278c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
278d0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
278e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
27900 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
27910 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
27920 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
27930 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
27940 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
27950 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27960 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
27970 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
27980 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
27990 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
279a0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
279b0 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
279c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
279d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
279e0 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
279f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27a00 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
27a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
27a20 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
27a30 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
27a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
27a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a90 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
27aa0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
27ab0 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
27ac0 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
27ad0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27ae0 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
27af0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
27b00 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
27b10 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
27b20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
27b30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
27b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
27b90 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
27ba0 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
27bb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27bc0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
27bd0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
27be0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27bf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
27c00 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
27c10 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
27c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27c40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
27c50 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
27c60 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
27c70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
27c80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27c90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ce0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
27cf0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
27d00 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
27d10 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
27d20 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
27d30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27d40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
27d50 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
27d60 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
27d70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27d90 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
27da0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
27db0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
27dc0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
27dd0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
27de0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
27df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
27e40 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
27e50 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
27e60 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
27e70 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
27e80 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
27e90 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
27ea0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
27eb0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
27ec0 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
27ed0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
27ee0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
27ef0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
27f00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27f10 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
27f20 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
27f30 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
27f40 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
27f50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
27f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fa0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
27fb0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
27fc0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
27fd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
27fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28020 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28030 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
28040 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
28050 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
28060 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
28070 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
28080 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
28090 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
280a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
280b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
280c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
280d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
280e0 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
280f0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
28100 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
28110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28120 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
28130 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
28140 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
28150 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
28160 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28170 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
28180 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
28190 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
281a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
281e0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
281f0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
28200 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
28210 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
28220 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
28230 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
28240 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
28250 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
28260 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28270 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
28280 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
28290 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
282a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
282b0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
282c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
282d0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
282e0 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
282f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
28300 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
28310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28350 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
28360 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
28370 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
28380 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
28390 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
283a0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
283b0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
283c0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
283d0 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
283e0 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
283f0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
28400 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
28410 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28460 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
28470 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
28480 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
28490 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
284a0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
284b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
284c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
284d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
284f0 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
28500 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
28510 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
28520 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
28530 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
28540 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
28550 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
28560 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
28570 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
28580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
28590 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
285a0 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61  Backup(cnn, loca
285b0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
285c0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
285d0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
285e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
285f0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
28600 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
28620 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
28630 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
28640 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
28650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28660 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
28670 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
28680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28690 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
286a0 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
286b0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
286c0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
286d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
286e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
286f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
28700 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28710 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
28720 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
28730 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
28740 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
28750 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28770 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
28780 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
28790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
287b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
287c0 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
287d0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
287e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
287f0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
28800 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
28810 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
28820 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28830 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
28840 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
28850 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
28860 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
28870 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
28880 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
28890 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
288a0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
288b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
288c0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
288d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
288e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
288f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
28900 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
28910 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
28920 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
28930 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
28940 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
28950 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
28960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28970 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
28980 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
28990 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
289a0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
289b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
289c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289d0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
289e0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
289f0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
28a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a10 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
28a20 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
28a30 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
28a40 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
28a50 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
28a60 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
28a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a80 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
28a90 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
28aa0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
28ab0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
28ac0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
28ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
28ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28af0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
28b00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28b10 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
28b20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
28b30 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
28b40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
28b60 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
28b70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
28b80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
28ba0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
28bb0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
28bc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28bd0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
28be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
28bf0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
28c00 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
28c10 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
28c20 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
28c30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
28c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c80 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
28c90 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
28ca0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
28cb0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
28cc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28cd0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
28ce0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
28cf0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
28d00 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
28d10 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
28d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
28d80 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
28d90 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
28da0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28db0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
28dc0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
28dd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28de0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
28df0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
28e00 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
28e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28e30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
28e40 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
28e50 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
28e60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28e70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28e80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
28e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ed0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
28ee0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
28ef0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
28f00 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
28f10 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
28f20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28f30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
28f40 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
28f50 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
28f60 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28f80 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
28f90 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
28fa0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28fb0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
28fc0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
28fd0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
28fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29020 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
29030 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  on SQLiteBlobHan
29040 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
29050 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
29060 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
29070 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
29080 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74  Lite blob object
29090 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
290a0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
290b0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a  LiteBlobHandle :
290c0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
290d0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
290e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
290f0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
29100 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
29110 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
29120 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
29130 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
29140 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29190 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
291a0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
291b0 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
291c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
291d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29210 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
29220 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
29230 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
29240 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
29250 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20   blob)..        
29260 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
29270 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29  f (blob != null)
29280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
29290 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
292a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
292b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292c0 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52  lock (blob.syncR
292d0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
292e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
292f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29300 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62       return blob
29310 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
29320 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
29330 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29340 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
29350 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
29360 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29370 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
293c0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
293d0 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53  LiteBlobHandle(S
293e0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
293f0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
29400 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20  r blob)..       
29410 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
29420 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
29430 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
29440 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
29450 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
29460 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29470 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
29490 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
294a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
294b0 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a  tHandle(blob);..
294c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
294d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
294e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
294f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29530 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
29540 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28  QLiteBlobHandle(
29550 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
29560 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
29570 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
29580 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
29590 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
295a0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
295b0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
295c0 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65  .blobCount);..#e
295d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
295e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
295f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29630 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
29640 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
29650 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
29660 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
29670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
29680 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
29690 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
296a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
296b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
296c0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
296d0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
296e0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29700 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
29710 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
29720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29730 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
29740 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29760 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
29770 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f  loseBlob(cnn, lo
29780 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
29790 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
297a0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
297b0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
297c0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
297d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
297e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297f0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
29800 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
29810 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
29820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29830 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
29840 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
29850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29860 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
29870 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  Blob: {0}", loca
29880 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
29890 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
298a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
298b0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
298c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
298d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
298e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
298f0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
29900 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
29910 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
29920 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29940 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
29950 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
29960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
29970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29980 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
29990 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
299a0 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299c0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
299d0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
299e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
29a00 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
29a10 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
29a20 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
29a30 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
29a40 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
29a50 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
29a60 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
29a70 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
29a80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
29a90 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
29aa0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
29ab0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
29ac0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
29ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
29ae0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
29af0 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
29b00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
29b10 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
29b20 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
29b30 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
29b40 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
29b50 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b70 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
29b80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29b90 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
29ba0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
29bb0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
29bc0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
29bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29be0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
29bf0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
29c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c10 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62        "CloseBlob
29c20 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
29c30 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
29c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c50 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
29c60 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
29c70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
29c90 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
29ca0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29cb0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
29cc0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
29cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
29ce0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
29cf0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
29d00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29d10 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
29d20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
29d30 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d60 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
29d70 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
29d80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29d90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
29da0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
29db0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
29dc0 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
29dd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
29de0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
29df0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29e00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
29e50 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
29e60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
29e70 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
29e80 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
29e90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29ea0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
29eb0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
29ec0 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
29ed0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
29ee0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
29f40 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
29f50 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
29f60 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
29f70 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
29f80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
29f90 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
29fa0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29fb0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
29fc0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
29fd0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
29fe0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29ff0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a000 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
2a010 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2a020 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a030 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a040 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a050 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2a0a0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2a0b0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2a0c0 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
2a0d0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
2a0e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2a0f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a100 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2a110 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2a120 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2a130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a140 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
2a150 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
2a160 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a170 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2a180 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
2a190 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..