System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 7e7185aab2a6e0c2a32ba4288267d0c8fe0ba461:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e  (TRACE_DETECTION
01a0: 20 7c 7c 20 54 52 41 43 45 5f 53 48 41 52 45 44   || TRACE_SHARED
01b0: 20 7c 7c 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   || TRACE_PRELOA
01c0: 44 20 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c  D || TRACE_HANDL
01d0: 45 29 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  E)..  using Syst
01e0: 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d  em.Diagnostics;.
01f0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0200: 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  ng System.Collec
0210: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a  tions.Generic;..
0220: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49    using System.I
0230: 4f 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  O;..  using Syst
0240: 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a  em.Reflection;..
0250: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0270: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
0280: 2e 53 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64  .Security;..#end
0290: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
02a0: 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74  stem.Runtime.Int
02b0: 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d  eropServices;...
02c0: 0a 23 69 66 20 28 4e 45 54 5f 34 30 20 7c 7c 20  .#if (NET_40 || 
02d0: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
02e0: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
02f0: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
0300: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 29 20 26 26  1 || NET_462) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
0360: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
0370: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69  FRAMEWORK..  usi
0380: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0390: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
03a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
03b0: 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f 55  FRAMEWORK || COU
03c0: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73 69  NT_HANDLE..  usi
03d0: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
03e0: 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ing;..#endif....
03f0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 58    using System.X
0400: 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ml;....  #region
0410: 20 44 65 62 75 67 20 44 61 74 61 20 53 74 61 74   Debug Data Stat
0420: 69 63 20 43 6c 61 73 73 0d 0a 23 69 66 20 43 4f  ic Class..#if CO
0430: 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c 20 44 45  UNT_HANDLE || DE
0440: 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  BUG..  /// <summ
0450: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
0460: 20 63 6c 61 73 73 20 65 6e 63 61 70 73 75 6c 61   class encapsula
0470: 74 65 73 20 73 6f 6d 65 20 74 72 61 63 6b 69 6e  tes some trackin
0480: 67 20 64 61 74 61 20 74 68 61 74 20 69 73 20 75  g data that is u
0490: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
04a0: 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 65 73  g..  /// and tes
04b0: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 0d 0a  ting purposes...
04c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04d0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
04e0: 74 69 63 20 63 6c 61 73 73 20 44 65 62 75 67 44  tic class DebugD
04f0: 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ata..  {..      
0500: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
0510: 44 61 74 61 0d 0a 23 69 66 20 44 45 42 55 47 0d  Data..#if DEBUG.
0520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0530: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0540: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
0550: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 73 65 76  d to protect sev
0560: 65 72 61 6c 20 73 74 61 74 69 63 20 66 69 65 6c  eral static fiel
0570: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
0580: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0590: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
05a0: 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
05b0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d  staticSyncRoot =
05c0: 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
05d0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0630: 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69 74 69     #region Criti
0640: 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74  cal Handle Count
0650: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0660: 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  nly)..#if COUNT_
0670: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f  HANDLE..      //
0680: 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  ..      // NOTE:
0690: 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 72 65   These counts re
06a0: 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f 74 61  present the tota
06b0: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73  l number of outs
06c0: 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  tanding..      /
06d0: 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73  /       (non-dis
06e0: 70 6f 73 65 64 29 20 43 72 69 74 69 63 61 6c 48  posed) CriticalH
06f0: 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20 6f 62  andle derived ob
0700: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a  ject instances..
0710: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
0720: 72 65 61 74 65 64 20 62 79 20 74 68 69 73 20 6c  reated by this l
0730: 69 62 72 61 72 79 20 61 6e 64 20 61 72 65 20 70  ibrary and are p
0740: 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75 73 65  rimarily for use
0750: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20   by..      //   
0760: 20 20 20 20 74 68 65 20 74 65 73 74 20 73 75 69      the test sui
0770: 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75 6e 74  te.  These count
0780: 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e 74 65  s are incremente
0790: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
07a0: 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63 69 61  //       associa
07b0: 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f 72 73  ted constructors
07c0: 20 61 6e 64 20 61 72 65 20 64 65 63 72 65 6d 65   and are decreme
07d0: 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20  nted upon the.. 
07e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 75       //       su
07f0: 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74  ccessful complet
0800: 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73 6f 63  ion of the assoc
0810: 69 61 74 65 64 20 52 65 6c 65 61 73 65 48 61 6e  iated ReleaseHan
0820: 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  dle..      //   
0830: 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20      methods...  
0840: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e      //..      in
0850: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e  ternal static in
0860: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  t connectionCoun
0870: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
0880: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 73 74  al static int st
0890: 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20  atementCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 61 63 6b 75 70 43  atic int backupC
08c0: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
08d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
08e0: 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e   blobCount;..#en
08f0: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
0900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0960: 20 20 23 72 65 67 69 6f 6e 20 53 65 74 74 69 6e    #region Settin
0970: 67 73 20 52 65 61 64 20 43 6f 75 6e 74 73 20 28  gs Read Counts (
0980: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
0990: 29 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  )..#if DEBUG..  
09a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
09b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
09c0: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
09d0: 72 65 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  res the read cou
09e0: 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74  nts for the runt
09f0: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
0a00: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
0a10: 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69 6e 66  tings.  This inf
0a20: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0a30: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0a40: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0a50: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0a60: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0a70: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0a80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0a90: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0aa0: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0ab0: 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74 74 69  ring, int> setti
0ac0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 0d  ngReadCounts;...
0ad0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
0b30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0b40: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0b50: 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 72 65  ry stores the re
0b60: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68  ad counts for th
0b70: 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67  e runtime config
0b80: 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  uration..      /
0b90: 2f 2f 20 73 65 74 74 69 6e 67 73 20 76 69 61 20  // settings via 
0ba0: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
0bb0: 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20 54 68 69  ation file.  Thi
0bc0: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0bd0: 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f   only..      ///
0be0: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0bf0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 20 22  ompiled in the "
0c00: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0c10: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0c20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0c30: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0c40: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0c50: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0c60: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
0c70: 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ounts;..#endif..
0c80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0c90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ce0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0cf0: 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f 75 6e 74  gion Other Count
0d00: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0d10: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0d20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0d40: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
0d50: 73 74 6f 72 65 73 20 6d 69 73 63 65 6c 6c 61 6e  stores miscellan
0d60: 65 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64  eous counts used
0d70: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a   for debugging..
0d80: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
0d90: 65 73 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  es.  This inform
0da0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 72 65  ation is only re
0db0: 63 6f 72 64 65 64 20 77 68 65 6e 20 63 6f 6d 70  corded when comp
0dc0: 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  iled in the..   
0dd0: 20 20 20 2f 2f 2f 20 22 44 65 62 75 67 22 20 62     /// "Debug" b
0de0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0df0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0e00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0e10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0e20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0e30: 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72 43 6f 75  g, int> otherCou
0e40: 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nts;..#endif..  
0e50: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0e60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0e70: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ec0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
0ed0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
0ee0: 6f 64 73 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  ods..#if DEBUG..
0ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
0f10: 72 65 61 74 65 73 20 64 69 63 74 69 6f 6e 61 72  reates dictionar
0f20: 69 65 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72  ies used to stor
0f30: 65 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  e the read count
0f40: 73 20 66 6f 72 20 65 61 63 68 20 6f 66 0d 0a 20  s for each of.. 
0f50: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 75 6e       /// the run
0f60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
0f70: 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20 20 54 68  on settings.  Th
0f80: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
0f90: 75 73 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20  used for..      
0fa0: 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67 20 61 6e  /// debugging an
0fb0: 64 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  d testing purpos
0fc0: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
0fd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0fe0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
0ff0: 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  tic void Initial
1000: 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ize()..      {..
1010: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1020: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1030: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1040: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1060: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
1070: 65 20 64 69 63 74 69 6f 6e 61 72 69 65 73 20 6f  e dictionaries o
1080: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
1090: 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  t will..        
10a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
10b0: 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75 6d 62 65  ontain the numbe
10c0: 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20  r of times each 
10d0: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 0d 0a 20  setting value.. 
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10f0: 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20 72        has been r
1100: 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ead...          
1110: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1120: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1130: 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e  gReadCounts == n
1140: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1150: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
1160: 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  eadCounts = new 
1170: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1180: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20  g, int>();....  
1190: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11a0: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
11b0: 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ounts == null)..
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61    settingFileRea
11e0: 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69  dCounts = new Di
11f0: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1200: 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20   int>();....    
1210: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c  herCounts == nul
1230: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1240: 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75 6e 74        otherCount
1250: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1260: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1270: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
1280: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1290: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
1300: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61  crements the rea
1310: 64 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20  d count for the 
1320: 73 70 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d  specified runtim
1330: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
1340: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
1350: 6e 67 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65  ng.  These numbe
1360: 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20  rs are used for 
1370: 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65  debugging and te
1380: 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a  sting purposes..
1390: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d        /// only..
13a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
13d0: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
13e0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
13f0: 73 65 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65  setting being re
1400: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
1410: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1420: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1430: 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20  viaFile">..     
1440: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
1450: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
1460: 65 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20  etting is being 
1470: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d  read from the XM
1480: 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
1490: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
14a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
14b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ram>..      publ
14c0: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
14d0: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
14e0: 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20  eadCount(..     
14f0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
1500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  ,..          boo
1510: 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20  l viaFile..     
1520: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
1530: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1540: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1550: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1580: 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73  / NOTE: Update s
1590: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
15a0: 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  is setting value
15b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15c0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15d0: 20 20 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d     if (viaFile).
15e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
15f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1600: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1610: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d  ileReadCounts !=
1620: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1630: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1650: 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d     int count;...
1660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1670: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1680: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1690: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
16a0: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
16d0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b  gFileReadCounts[
16e0: 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20  name] = count + 
16f0: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
1700: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1720: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1730: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e  gFileReadCounts.
1740: 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20  Add(name, 1);.. 
1750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1760: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1770: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1780: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1790: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17b0: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
17c0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17f0: 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74         int count
1800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1810: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1820: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1830: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
1840: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1860: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1870: 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65  gReadCounts[name
1880: 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a  ] = count + 1;..
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
18d0: 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65  dCounts.Add(name
18e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
18f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1900: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1910: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1920: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
1980: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1990: 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74     /// Increment
19a0: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
19b0: 63 6f 75 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  counter...      
19c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
19d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19e0: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
19f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
1a00: 65 20 6f 66 20 74 68 65 20 63 6f 75 6e 74 65 72  e of the counter
1a10: 20 62 65 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74   being increment
1a20: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
1a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1a40: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1a50: 64 20 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  d IncrementOther
1a60: 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  Count(..        
1a70: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20    string name.. 
1a80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1a90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1aa0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1ab0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1ac0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ad0: 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74 73   if (otherCounts
1ae0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1af0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
1b10: 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20  t count;....    
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1b30: 20 28 6f 74 68 65 72 43 6f 75 6e 74 73 2e 54 72   (otherCounts.Tr
1b40: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  yGetValue(name, 
1b50: 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20  out count))..   
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 5b 6e     otherCounts[n
1b80: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
1b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ba0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc0: 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 41 64 64   otherCounts.Add
1bd0: 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20  (name, 1);..    
1be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c00: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1c10: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
1c20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64  ..#endif..  #end
1c30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
1c90: 72 65 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65  region Helper Me
1ca0: 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61  thods Static Cla
1cb0: 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ss..  /// <summa
1cc0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
1cd0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f  static class pro
1ce0: 76 69 64 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f  vides some metho
1cf0: 64 73 20 74 68 61 74 20 61 72 65 20 73 68 61 72  ds that are shar
1d00: 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0d 0a  ed between the..
1d10: 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62    /// native lib
1d20: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
1d30: 61 6e 64 20 6f 74 68 65 72 20 63 6c 61 73 73 65  and other classe
1d40: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
1d50: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
1d60: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 48 65   static class He
1d70: 6c 70 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  lperMethods..  {
1d80: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
1d90: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
1da0: 73 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  s..      private
1db0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
1dc0: 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 20  splayNullObject 
1dd0: 3d 20 22 3c 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22  = "<nullObject>"
1de0: 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ;..      private
1df0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
1e00: 73 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e 67  splayEmptyString
1e10: 20 3d 20 22 3c 65 6d 70 74 79 53 74 72 69 6e 67   = "<emptyString
1e20: 3e 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  >";..      priva
1e30: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1e40: 44 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  DisplayStringFor
1e50: 6d 61 74 20 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b  mat = "\"{0}\"";
1e60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
1ec0: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
1ed0: 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72  g DisplayNullArr
1ee0: 61 79 20 3d 20 22 3c 6e 75 6c 6c 41 72 72 61 79  ay = "<nullArray
1ef0: 3e 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  >";..      priva
1f00: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1f10: 44 69 73 70 6c 61 79 45 6d 70 74 79 41 72 72 61  DisplayEmptyArra
1f20: 79 20 3d 20 22 3c 65 6d 70 74 79 41 72 72 61 79  y = "<emptyArray
1f30: 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  >";....      ///
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f90: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68  private const ch
1fa0: 61 72 20 41 72 72 61 79 4f 70 65 6e 20 3d 20 27  ar ArrayOpen = '
1fb0: 5b 27 3b 0d 0a 20 20 20 20 20 20 70 72 69 76 61  [';..      priva
1fc0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
1fd0: 45 6c 65 6d 65 6e 74 53 65 70 61 72 61 74 6f 72  ElementSeparator
1fe0: 20 3d 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20   = ", ";..      
1ff0: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68  private const ch
2000: 61 72 20 41 72 72 61 79 43 6c 6f 73 65 20 3d 20  ar ArrayClose = 
2010: 27 5d 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ']';....      //
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2060: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2070: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2080: 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20  readonly char[] 
2090: 53 70 61 63 65 43 68 61 72 73 20 3d 20 7b 0d 0a  SpaceChars = {..
20a0: 20 20 20 20 20 20 20 20 20 20 27 5c 74 27 2c 20            '\t', 
20b0: 27 5c 6e 27 2c 20 27 5c 72 27 2c 20 27 5c 76 27  '\n', '\r', '\v'
20c0: 2c 20 27 5c 66 27 2c 20 27 20 27 0d 0a 20 20 20  , '\f', ' '..   
20d0: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 23 65 6e     };..      #en
20e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
20f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2140: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
2150: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
2160: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2170: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
2180: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
2190: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
21a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f   <see cref="isMo
21b0: 6e 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20  no" /> field... 
21c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
21d0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
21e0: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
21f0: 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63  ly object static
2200: 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  SyncRoot = new o
2210: 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  bject();....    
2220: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2270: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
2290: 20 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72   type is only pr
22a0: 65 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69  esent when runni
22b0: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ng on Mono...   
22c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22d0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
22e0: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
22f0: 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74   string MonoRunt
2300: 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e  imeType = "Mono.
2310: 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20  Runtime";....   
2320: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
2370: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65  >..      /// Kee
2390: 70 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74  ps track of whet
23a0: 68 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69  her we are runni
23b0: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69  ng on Mono.  Ini
23c0: 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20  tially null, it 
23d0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65  is..      /// se
23e0: 74 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  t by the <see cr
23f0: 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d  ef="IsMono" /> m
2400: 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72  ethod on its fir
2410: 73 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c  st call.  Later,
2420: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   it..      /// i
2430: 73 20 72 65 74 75 72 6e 65 64 20 76 65 72 62 61  s returned verba
2440: 74 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20  tim by the <see 
2450: 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e  cref="IsMono" />
2460: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2470: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2490: 61 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e  atic bool? isMon
24a0: 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  o = null;..     
24b0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
24c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2510: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2520: 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d  Private Methods.
2530: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2540: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2550: 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  Determines wheth
2560: 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61  er or not this a
2570: 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69  ssembly is runni
2580: 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ng on Mono...   
2590: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
25b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
25c0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
25d0: 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72  is assembly is r
25e0: 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d  unning on Mono..
25f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2600: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2610: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
2620: 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20   IsMono()..     
2630: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
2640: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2660: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
2670: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
2680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2690: 20 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f          if (isMo
26a0: 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  no == null)..   
26b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c0: 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70     isMono = (Typ
26d0: 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75  e.GetType(MonoRu
26e0: 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75  ntimeType) != nu
26f0: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
2700: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2710: 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a   (bool)isMono;..
2720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2730: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
2740: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2760: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
2770: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
2780: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2790: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
27a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
27b0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
27c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
27d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2810: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2820: 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73  Internal Methods
2830: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2850: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 70   Determines if p
2860: 72 65 70 61 72 69 6e 67 20 61 20 71 75 65 72 79  reparing a query
2870: 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65   should be logge
2880: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
2890: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28b0: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
28c0: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
28d0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
28e0: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
28f0: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
2900: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2910: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
2920: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
2930: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
2940: 71 75 65 72 79 20 70 72 65 70 61 72 61 74 69 6f  query preparatio
2950: 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  n should be logg
2960: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
2970: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
2980: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2990: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29a0: 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65 70 61 72  c bool LogPrepar
29b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  e(..          SQ
29c0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
29d0: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
29e0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
29f0: 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73  .          flags
2a00: 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   &= SQLiteConnec
2a10: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65  tionFlags.LogPre
2a20: 70 61 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  pare;..         
2a30: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
2a40: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
2a50: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65 70 61  onFlags.LogPrepa
2a60: 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  re);..      }...
2a70: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2ad0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2ae0: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 70   Determines if p
2af0: 72 65 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e  re-parameter bin
2b00: 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c  ding should be l
2b10: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
2b20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b30: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2b40: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
2b50: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
2b60: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2b70: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
2b80: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
2b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2ba0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
2bb0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2bc0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
2bd0: 74 68 65 20 70 72 65 2d 70 61 72 61 6d 65 74 65  the pre-paramete
2be0: 72 20 62 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64  r binding should
2bf0: 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65   be logged; othe
2c00: 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f  rwise,..      //
2c10: 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  / zero...      /
2c20: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2c30: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
2c40: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65  atic bool LogPre
2c50: 42 69 6e 64 28 0d 0a 20 20 20 20 20 20 20 20 20  Bind(..         
2c60: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2c70: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
2c80: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2c90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
2ca0: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
2cb0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
2cc0: 50 72 65 42 69 6e 64 3b 0d 0a 20 20 20 20 20 20  PreBind;..      
2cd0: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
2ce0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
2cf0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72  ctionFlags.LogPr
2d00: 65 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  eBind);..      }
2d10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
2d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2d80: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
2d90: 66 20 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64  f parameter bind
2da0: 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ing should be lo
2db0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
2dc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2dd0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2de0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
2df0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
2e00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2e10: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
2e20: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
2e30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2e40: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
2e50: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
2e60: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
2e70: 68 65 20 70 61 72 61 6d 65 74 65 72 20 62 69 6e  he parameter bin
2e80: 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c  ding should be l
2e90: 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65  ogged; otherwise
2ea0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
2eb0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2ec0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
2ed0: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 69 6e  atic bool LogBin
2ee0: 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  d(..          SQ
2ef0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2f00: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
2f10: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
2f20: 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73  .          flags
2f30: 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   &= SQLiteConnec
2f40: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 69 6e  tionFlags.LogBin
2f50: 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  d;..          re
2f60: 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53  turn (flags == S
2f70: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
2f80: 6c 61 67 73 2e 4c 6f 67 42 69 6e 64 29 3b 0d 0a  lags.LogBind);..
2f90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2fa0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2ff0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3000: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3010: 6d 69 6e 65 73 20 69 66 20 61 6e 20 65 78 63 65  mines if an exce
3020: 70 74 69 6f 6e 20 69 6e 20 61 20 6e 61 74 69 76  ption in a nativ
3030: 65 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c  e callback shoul
3040: 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20  d be logged...  
3050: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3060: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
3070: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
3080: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
3090: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
30a0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
30b0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
30c0: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
30d0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30e0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
30f0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
3100: 72 6f 20 69 66 20 74 68 65 20 65 78 63 65 70 74  ro if the except
3110: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ion should be lo
3120: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
3130: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
3140: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3150: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3160: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 43 61 6c 6c  tic bool LogCall
3170: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 73 28 0d  backExceptions(.
3180: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
3190: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
31a0: 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
31b0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
31c0: 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d          flags &=
31d0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
31e0: 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62 61  nFlags.LogCallba
31f0: 63 6b 45 78 63 65 70 74 69 6f 6e 3b 0d 0a 20 20  ckException;..  
3200: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
3210: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
3220: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
3230: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
3240: 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ion);..      }..
3250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
32b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
32c0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
32d0: 62 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f 72  backup API error
32e0: 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
32f0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
3300: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3310: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
3320: 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20  ="flags">..     
3330: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61   /// The flags a
3340: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3350: 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  he parent connec
3360: 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20  tion object...  
3370: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3380: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
3390: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
33a0: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
33b0: 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f   backup API erro
33c0: 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  r should be logg
33d0: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
33e0: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
33f0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3400: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3410: 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b 75 70  c bool LogBackup
3420: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
3430: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
3440: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
3450: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
3460: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
3470: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
3480: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b  ionFlags.LogBack
3490: 75 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72  up;..          r
34a0: 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20  eturn (flags == 
34b0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
34c0: 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b 75 70 29  Flags.LogBackup)
34d0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69  ;..      }....#i
34e0: 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
34f0: 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f  L_TABLE..      /
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3540: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3550: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3560: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
3570: 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e 67 20 66  nes if logging f
3580: 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  or the <see cref
3590: 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
35a0: 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a 20 20 20  /> class is..   
35b0: 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c 65 64 2e     /// disabled.
35c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
35d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
35e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
35f0: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  lags">..      //
3600: 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f  / The flags asso
3610: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
3620: 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
3630: 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20  n object...     
3640: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
3650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3660: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
3670: 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67 67 69 6e  n-zero if loggin
3680: 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  g for the <see c
3690: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
36a0: 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a  e" /> class is..
36b0: 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c        /// disabl
36c0: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ed; otherwise, z
36d0: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
36e0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
3700: 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d 6f 64 75  c bool NoLogModu
3710: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  le(..          S
3720: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
3730: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
3740: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
3750: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
3760: 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s &= SQLiteConne
3770: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 67  ctionFlags.NoLog
3780: 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
3790: 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73     return (flags
37a0: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
37b0: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 67 4d  tionFlags.NoLogM
37c0: 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20 20 7d  odule);..      }
37d0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3820: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3840: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
3850: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
3860: 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65 72  iteModule" /> er
3870: 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  rors should be l
3880: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
3890: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
38a0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
38b0: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
38c0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
38d0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
38e0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
38f0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
3900: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
3910: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
3920: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3930: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
3940: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
3950: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
3960: 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20  error should be 
3970: 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20 20 2f  logged;..      /
3980: 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65  // otherwise, ze
3990: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
39a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
39b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
39c0: 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45   bool LogModuleE
39d0: 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
39e0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
39f0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
3a00: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3a10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
3a20: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
3a30: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
3a40: 4d 6f 64 75 6c 65 45 72 72 6f 72 3b 0d 0a 20 20  ModuleError;..  
3a50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
3a60: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
3a70: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
3a80: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 29 3b 0d  ogModuleError);.
3a90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
3aa0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
3af0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3b00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
3b10: 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65 20 63  rmines if <see c
3b20: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
3b30: 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 73  e" /> exceptions
3b40: 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20   should be..    
3b50: 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d 0a 20    /// logged... 
3b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3b70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
3b80: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
3b90: 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  s">..      /// T
3ba0: 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61  he flags associa
3bb0: 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72  ted with the par
3bc0: 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ent connection o
3bd0: 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  bject...      //
3be0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3bf0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
3c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
3c10: 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20  ero if the <see 
3c20: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
3c30: 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e  le" /> exception
3c40: 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20   should be..    
3c50: 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20 6f 74    /// logged; ot
3c60: 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a  herwise, zero...
3c70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3c80: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
3c90: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
3ca0: 20 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74   LogModuleExcept
3cb0: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
3cc0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
3cd0: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
3ce0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
3cf0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
3d00: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
3d10: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d  ectionFlags.LogM
3d20: 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 3b 0d  oduleException;.
3d30: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
3d40: 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69  n (flags == SQLi
3d50: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
3d60: 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70  s.LogModuleExcep
3d70: 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  tion);..      }.
3d80: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
3d90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
3de0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3df0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3e00: 6d 69 6e 65 73 20 69 66 20 74 68 65 20 63 75 72  mines if the cur
3e10: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 69 73 20  rent process is 
3e20: 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f 6e 65 20 6f  running on one o
3e30: 66 20 74 68 65 20 57 69 6e 64 6f 77 73 0d 0a 20  f the Windows.. 
3e40: 20 20 20 20 20 2f 2f 2f 20 5b 73 75 62 2d 5d 70       /// [sub-]p
3e50: 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20 20 20 20 20  latforms...     
3e60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3e70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3e80: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3e90: 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65 6e 20 72 75  Non-zero when ru
3ea0: 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73  nning on Windows
3eb0: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
3ec0: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
3ed0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3ee0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3ef0: 62 6f 6f 6c 20 49 73 57 69 6e 64 6f 77 73 28 29  bool IsWindows()
3f00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3f10: 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20       PlatformID 
3f20: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76  platformId = Env
3f30: 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69  ironment.OSVersi
3f40: 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a  on.Platform;....
3f50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
3f60: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
3f70: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20  tformID.Win32S) 
3f80: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
3f90: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
3fa0: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
3fb0: 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20  2Windows) ||..  
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
3fd0: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
3fe0: 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c  ormID.Win32NT) |
3ff0: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
4000: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
4010: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45  PlatformID.WinCE
4020: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
4030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
4040: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
4050: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
4060: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
4070: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  se;..      }....
4080: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
40e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
40f0: 54 68 69 73 20 69 73 20 61 20 77 72 61 70 70 65  This is a wrappe
4100: 72 20 61 72 6f 75 6e 64 20 74 68 65 0d 0a 20 20  r around the..  
4110: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
4120: 66 3d 22 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  f="String.Format
4130: 28 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72  (IFormatProvider
4140: 2c 53 74 72 69 6e 67 2c 4f 62 6a 65 63 74 5b 5d  ,String,Object[]
4150: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  )" /> method... 
4160: 20 20 20 20 20 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f       /// On Mono
4170: 2c 20 69 74 20 68 61 73 20 74 6f 20 63 61 6c 6c  , it has to call
4180: 20 74 68 65 20 6d 65 74 68 6f 64 20 6f 76 65 72   the method over
4190: 6c 6f 61 64 20 77 69 74 68 6f 75 74 20 74 68 65  load without the
41a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
41b0: 20 63 72 65 66 3d 22 49 46 6f 72 6d 61 74 50 72   cref="IFormatPr
41c0: 6f 76 69 64 65 72 22 20 2f 3e 20 70 61 72 61 6d  ovider" /> param
41d0: 65 74 65 72 2c 20 64 75 65 20 74 6f 20 61 20 62  eter, due to a b
41e0: 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20  ug in Mono...   
41f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4200: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4210: 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64  ram name="provid
4220: 65 72 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  er">..      /// 
4230: 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72  This is used for
4240: 20 63 75 6c 74 75 72 65 2d 73 70 65 63 69 66 69   culture-specifi
4250: 63 20 66 6f 72 6d 61 74 74 69 6e 67 2e 0d 0a 20  c formatting... 
4260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4270: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4280: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
4290: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
42a0: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e  e format string.
42b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
42c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
42d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
42e0: 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  s">..      /// A
42f0: 6e 20 61 72 72 61 79 20 74 68 65 20 6f 62 6a 65  n array the obje
4300: 63 74 73 20 74 6f 20 66 6f 72 6d 61 74 2e 0d 0a  cts to format...
4310: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
4320: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
4330: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4340: 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67  // The resulting
4350: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
4360: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
4370: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
4380: 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
4390: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
43a0: 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f        IFormatPro
43b0: 76 69 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d  vider provider,.
43c0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
43d0: 67 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  g format,..     
43e0: 20 20 20 20 20 70 61 72 61 6d 73 20 6f 62 6a 65       params obje
43f0: 63 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20 20 20  ct[] args..     
4400: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
4410: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 49  .          if (I
4420: 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20 20 20 20 20  sMono())..      
4430: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
4440: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 66 6f 72  tring.Format(for
4450: 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20  mat, args);..   
4460: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
4470: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4480: 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n String.Format(
4490: 70 72 6f 76 69 64 65 72 2c 20 66 6f 72 6d 61 74  provider, format
44a0: 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20  , args);..      
44b0: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
44c0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
44d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4510: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4520: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
4530: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75  ethods..      pu
4540: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
4550: 6e 67 20 54 6f 44 69 73 70 6c 61 79 53 74 72 69  ng ToDisplayStri
4560: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 6f  ng(..          o
4570: 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20  bject value..   
4580: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4590: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
45a0: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
45b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
45c0: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e 75 6c  eturn DisplayNul
45d0: 6c 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20 20  lObject;....    
45e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 74 72        string str
45f0: 69 6e 67 56 61 6c 75 65 20 3d 20 76 61 6c 75 65  ingValue = value
4600: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a  .ToString();....
4610: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
4620: 72 69 6e 67 56 61 6c 75 65 2e 4c 65 6e 67 74 68  ringValue.Length
4630: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
4640: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73        return Dis
4650: 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e 67 3b  playEmptyString;
4660: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
4670: 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e 49 6e   (stringValue.In
4680: 64 65 78 4f 66 41 6e 79 28 53 70 61 63 65 43 68  dexOfAny(SpaceCh
4690: 61 72 73 29 20 3c 20 30 29 0d 0a 20 20 20 20 20  ars) < 0)..     
46a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
46b0: 73 74 72 69 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a  stringValue;....
46c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
46d0: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
46e0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
46f0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
4700: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
4710: 74 43 75 6c 74 75 72 65 2c 20 44 69 73 70 6c 61  tCulture, Displa
4720: 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 2c 0d 0a  yStringFormat,..
4730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
4740: 72 69 6e 67 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ringValue);..   
4750: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
47b0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
47c0: 74 72 69 6e 67 20 54 6f 44 69 73 70 6c 61 79 53  tring ToDisplayS
47d0: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
47e0: 20 20 41 72 72 61 79 20 61 72 72 61 79 0d 0a 20    Array array.. 
47f0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
4810: 66 20 28 61 72 72 61 79 20 3d 3d 20 6e 75 6c 6c  f (array == null
4820: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4830: 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e   return DisplayN
4840: 75 6c 6c 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20  ullArray;....   
4850: 20 20 20 20 20 20 20 69 66 20 28 61 72 72 61 79         if (array
4860: 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20  .Length == 0).. 
4870: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4880: 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70 74 79  urn DisplayEmpty
4890: 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  Array;....      
48a0: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
48b0: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
48c0: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
48d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
48e0: 65 61 63 68 20 28 6f 62 6a 65 63 74 20 76 61 6c  each (object val
48f0: 75 65 20 69 6e 20 61 72 72 61 79 29 0d 0a 20 20  ue in array)..  
4900: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4910: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
4920: 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
4930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4940: 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
4950: 28 45 6c 65 6d 65 6e 74 53 65 70 61 72 61 74 6f  (ElementSeparato
4960: 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
4970: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
4980: 6e 64 28 54 6f 44 69 73 70 6c 61 79 53 74 72 69  nd(ToDisplayStri
4990: 6e 67 28 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20  ng(value));..   
49a0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
49b0: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
49c0: 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  .Length > 0)..  
49d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
49e0: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
49f0: 49 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79 4f  Insert(0, ArrayO
4a00: 70 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  pen);..         
4a10: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
4a20: 6e 64 28 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d  nd(ArrayClose);.
4a30: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
4a40: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4a50: 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
4a60: 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ();..      }..  
4a70: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
4a80: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
4a90: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
4aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ae0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
4af0: 6e 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79  n Native Library
4b00: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
4b10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4b20: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
4b30: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
4b40: 20 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20   a thin wrapper 
4b50: 61 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76  around the nativ
4b60: 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f  e library..  ///
4b70: 20 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65   loading feature
4b80: 73 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  s of the underly
4b90: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  ing platform... 
4ba0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4bb0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
4bc0: 69 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c  ic class NativeL
4bd0: 69 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20  ibraryHelper..  
4be0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
4bf0: 20 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74   Private Delegat
4c00: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  es..      /// <s
4c10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4c20: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
4c30: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
4c40: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
4c50: 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65  loading a native
4c60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
4c70: 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20  ary, based on a 
4c80: 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72  file name, and r
4c90: 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61  eturning the loa
4ca0: 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ded module..    
4cb0: 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20    /// handle... 
4cc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4cd0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4ce0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
4cf0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
4d00: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
4d10: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
4d20: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
4d30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
4d40: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
4d50: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4d60: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
4d70: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
4d80: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
4d90: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
4da0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
4db0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4dc0: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
4dd0: 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ate IntPtr LoadL
4de0: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d  ibraryCallback(.
4df0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
4e00: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
4e10: 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    );..      #end
4e20: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
4e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
4e80: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
4e90: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
4ea0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
4ec0: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
4ed0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
4ee0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
4ef0: 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20  ing the Win32.. 
4f00: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
4f10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4f20: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4f30: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
4f40: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
4f50: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
4f60: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
4f70: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
4f80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
4f90: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
4fa0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4fb0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
4fc0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
4fd0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
4fe0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
4ff0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
5000: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
5010: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5020: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
5030: 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20  raryWin32(..    
5040: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
5050: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
5060: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
5070: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
5080: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
5090: 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61  sWin32.LoadLibra
50a0: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
50b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
50c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
5110: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
5120: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
5130: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5140: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
5150: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
5160: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
5170: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
5180: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
5190: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
51a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
51b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
51c0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
51d0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
51e0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
51f0: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
5200: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
5210: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
5220: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
5230: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5240: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
5250: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
5260: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
5270: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
5280: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
5290: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
52a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
52b0: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
52c0: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
52d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
52e0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
52f0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
5300: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
5310: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
5320: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
5330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
5340: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
5350: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
5360: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
5370: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
5380: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
5390: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
53f0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
5400: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
5410: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5420: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
5430: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
5440: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
5450: 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20  rary file...    
5460: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
5480: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
5490: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
54a0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
54b0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
54c0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
54d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
54e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
54f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
5500: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
5510: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
5520: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
5530: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
5540: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
5550: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5560: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
5570: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
5580: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
5590: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
55a0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
55b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f   {..          Lo
55c0: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
55d0: 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61  k callback = Loa
55e0: 64 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a  dLibraryWin32;..
55f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5600: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5610: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
5620: 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  !HelperMethods.I
5630: 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
5640: 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62             callb
5650: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
5660: 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d  yPosix;..#endif.
5670: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
5680: 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c  urn callback(fil
5690: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
56a0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
56b0: 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
56c0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
5710: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
5720: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
5730: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
5740: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f  Static Class (PO
5750: 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46  SIX)..#if !PLATF
5760: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5770: 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  WORK..  /// <sum
5780: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
5790: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
57a0: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
57b0: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
57c0: 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20   POSIX APIs...  
57d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
57e0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
57f0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
5800: 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ]..  internal st
5810: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
5820: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
5830: 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  six..  {..      
5840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
5890: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
58a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
58b0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
58c0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
58d0: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
58e0: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
58f0: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
5900: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
5910: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
5920: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
5930: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
5940: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
5950: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5960: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5970: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
5980: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
5990: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
59a0: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
59b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
59c0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
59d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
59e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
59f0: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
5a00: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
5a10: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
5a20: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
5a30: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
5a40: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
5a50: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
5a60: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
5a70: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
5a80: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
5a90: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
5aa0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
5ab0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
5ac0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
5ad0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
5ae0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
5af0: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
5b00: 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c  rt("__Internal",
5b10: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64   EntryPoint = "d
5b20: 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20  lopen",..       
5b30: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
5b40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5b50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
5b60: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
5b70: 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20  t.Ansi,..       
5b80: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
5b90: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
5ba0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
5bb0: 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   = true,..      
5bc0: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
5bd0: 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20   = true)]..     
5be0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5bf0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64   extern IntPtr d
5c00: 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c  lopen(string fil
5c10: 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29  eName, int mode)
5c20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c70: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5c90: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
5ca0: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64  h dlopen(), bind
5cb0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
5cc0: 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  lazily...      /
5cd0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5ce0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
5cf0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a  nst int RTLD_LAZ
5d00: 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20  Y = 0x1;....    
5d10: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5d60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5d70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
5d80: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
5d90: 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e  ), bind function
5da0: 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65   calls immediate
5db0: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
5dc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5dd0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
5de0: 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30  int RTLD_NOW = 0
5df0: 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x2;....      ///
5e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e40: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
5e50: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5e60: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
5e70: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61  ith dlopen(), ma
5e80: 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61  ke symbols globa
5e90: 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  lly available...
5ea0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5eb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
5ec0: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
5ed0: 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31  TLD_GLOBAL = 0x1
5ee0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00;....      ///
5ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
5f40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5f50: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
5f60: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70  ith dlopen(), op
5f70: 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47  posite of RTLD_G
5f80: 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64  LOBAL, and the d
5f90: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  efault...      /
5fa0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5fb0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
5fc0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43  nst int RTLD_LOC
5fd0: 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20  AL = 0x000;.... 
5fe0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6030: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6040: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
6050: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
6060: 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c  en(), the defaul
6070: 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20  ts used by this 
6080: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  class...      //
6090: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
60a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f      internal  co
60b0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
60c0: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
60d0: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
60e0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
60f0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
6100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6150: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
6160: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
6170: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
6180: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
6190: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
61a0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
61b0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
61c0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
61d0: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
61e0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
61f0: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
6200: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
6210: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
6220: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
6230: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
6240: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6250: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
6260: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
6270: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  .  {..      ////
6280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62c0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
62d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
62e0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
62f0: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
6300: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
6310: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
6320: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
6330: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
6340: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
6350: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
6360: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
6370: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
6380: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
6390: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
63a0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
63b0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
63c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
63d0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
63e0: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
63f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
6400: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
6410: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6420: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
6430: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
6440: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
6450: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
6460: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
6470: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
6480: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6490: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
64a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
64b0: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
64c0: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
64d0: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
64e0: 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67  #endif.. Calling
64f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6500: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
6510: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
6520: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
6530: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6540: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6550: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
6560: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
6570: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
6580: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
6590: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
65a0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
65b0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
65c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
65d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f  extern IntPtr Lo
65e0: 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67  adLibrary(string
65f0: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   fileName);.... 
6600: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6650: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
6660: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6670: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6680: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6690: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
66a0: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
66b0: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
66c0: 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65  e Win32 GetSyste
66d0: 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  mInfo..      ///
66e0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
66f0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
6700: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
6710: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
6720: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
6730: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
6740: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6750: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6760: 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a  ="systemInfo">..
6770: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79        /// The sy
6780: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
6790: 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
67a0: 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68   filled in by th
67b0: 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
67c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
67d0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
67e0: 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c  t("coredll", Cal
67f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6800: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6810: 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20  on.Winapi)]..   
6820: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6830: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
6840: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
6850: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
6860: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
6870: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
68c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
68d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
68e0: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
68f0: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
6900: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
6910: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
6920: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
6930: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
6940: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
6950: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
6960: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6970: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
6980: 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65  ernal enum Proce
6990: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
69a0: 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d   : ushort /* COM
69b0: 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a  PAT: Win32. */..
69c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
69d0: 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20     Intel = 0,.. 
69e0: 20 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20           MIPS = 
69f0: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c  1,..          Al
6a00: 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20  pha = 2,..      
6a10: 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c      PowerPC = 3,
6a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20  ..          SHx 
6a30: 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 4,..          
6a40: 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20  ARM = 5,..      
6a50: 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20      IA64 = 6,.. 
6a60: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34           Alpha64
6a70: 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 7,..         
6a80: 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20   MSIL = 8,..    
6a90: 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c        AMD64 = 9,
6aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32  ..          IA32
6ab0: 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d  _on_Win64 = 10,.
6ac0: 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f  .          Unkno
6ad0: 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20  wn = 0xFFFF..   
6ae0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6b40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6b50: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72      /// This str
6b60: 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20  ucture contains 
6b70: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
6b80: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f  t the current co
6b90: 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20  mputer. This..  
6ba0: 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73      /// includes
6bb0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74   the processor t
6bc0: 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20  ype, page size, 
6bd0: 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73  memory addresses
6be0: 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f  , etc...      //
6bf0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6c00: 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
6c10: 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
6c20: 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20  uential)]..     
6c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
6c40: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20   SYSTEM_INFO..  
6c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6c60: 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f   public Processo
6c70: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50  rArchitecture wP
6c80: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
6c90: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ture;..         
6ca0: 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77   public ushort w
6cb0: 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54  Reserved; /* NOT
6cc0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
6cd0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
6ce0: 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e  dwPageSize; /* N
6cf0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
6d00: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
6d10: 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70  Ptr lpMinimumApp
6d20: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
6d30: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
6d40: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
6d50: 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d  c IntPtr lpMaxim
6d60: 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64  umApplicationAdd
6d70: 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  ress; /* NOT USE
6d80: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
6d90: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63  public uint dwAc
6da0: 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73  tiveProcessorMas
6db0: 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  k; /* NOT USED *
6dc0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
6dd0: 6c 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65  lic uint dwNumbe
6de0: 72 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f  rOfProcessors; /
6df0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
6e00: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
6e10: 75 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72  uint dwProcessor
6e20: 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Type; /* NOT USE
6e30: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
6e40: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c  public uint dwAl
6e50: 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72  locationGranular
6e60: 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ity; /* NOT USED
6e70: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
6e80: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
6e90: 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a  ocessorLevel; /*
6ea0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
6eb0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
6ec0: 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72  short wProcessor
6ed0: 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54  Revision; /* NOT
6ee0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
6ef0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a  }..#endif..  }..
6f00: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6f10: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6f60: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
6f70: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
6f80: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
6f90: 61 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20  ass (SQLite)..  
6fa0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6fb0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
6fc0: 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b  declares P/Invok
6fd0: 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c  e methods to cal
6fe0: 6c 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l native SQLite 
6ff0: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
7000: 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
7010: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7020: 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70  AMEWORK..  [Supp
7030: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
7040: 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64  eSecurity]..#end
7050: 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  if..  internal s
7060: 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61  tatic class Unsa
7070: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
7080: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70 75 62 6c  .  {..      publ
7090: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
70a0: 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67 65  ExceptionMessage
70b0: 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20 20 20 20  Format =..      
70c0: 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
70d0: 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22  ption in \"{0}\"
70e0: 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a   method: {1}";..
70f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7140: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
7150: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
7160: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
7170: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
7180: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
7190: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
71a0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
71b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
71c0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
71d0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
71e0: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
71f0: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
7200: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7210: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7220: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
7230: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
7240: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
7250: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
72a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
72b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
72c0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
72d0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
72e0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
72f0: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
7300: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7310: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
7320: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
7330: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
7340: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
7350: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
73b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
73c0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
73d0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
73e0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
73f0: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
7400: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
7410: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
7420: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
7430: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7440: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
7450: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
7460: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
7470: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
7480: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
7490: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
74a0: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
74b0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
74c0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
74d0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
74e0: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
74f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7530: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
7540: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7550: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
7560: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
7570: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
7580: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
7590: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
75a0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
75b0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
75c0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
75d0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
75e0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
75f0: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
7600: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7610: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
7620: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
7630: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
7640: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
7650: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
7660: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
7670: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
7680: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
7690: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
76f0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
7700: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
7710: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
7720: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
7730: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7740: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
7750: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7760: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
7770: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
7780: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
7790: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
77a0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
77b0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
77c0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
77d0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
77e0: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
77f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
7800: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
7810: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
7820: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
7830: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
7840: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
7850: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
7860: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
7870: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
78d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
78e0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
78f0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
7900: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
7910: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
7920: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
7930: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
7940: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
7950: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
7960: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
7970: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
7980: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
7990: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
79a0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
79b0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
79c0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
79d0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
79e0: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
79f0: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
7a00: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
7a10: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
7a20: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
7a30: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a80: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
7a90: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
7aa0: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
7ab0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7ac0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
7ad0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
7ae0: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
7af0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
7b00: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
7b10: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
7b20: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
7b30: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
7b40: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
7b50: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
7b60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7b70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
7b80: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
7b90: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
7ba0: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
7bb0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
7bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
7c10: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7c20: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
7c30: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
7c40: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
7c50: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
7c60: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
7c70: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
7c80: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
7c90: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
7ca0: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
7cb0: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
7cc0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
7cd0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
7ce0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
7cf0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
7d00: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
7d10: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
7d20: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
7d30: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
7d40: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
7d50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
7d60: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
7d70: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
7d80: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
7d90: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
7da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
7db0: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
7dc0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
7dd0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
7de0: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
7df0: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
7e00: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
7e10: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
7e20: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
7e30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7e40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
7e50: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
7e60: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
7e70: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
7e80: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
7e90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
7ef0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7f00: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
7f10: 63 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61  cached return va
7f20: 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  lue from the..  
7f30: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
7f40: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
7f50: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
7f60: 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  od -OR- null if 
7f70: 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20  that method..   
7f80: 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72     /// has never
7f90: 20 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69   returned a vali
7fa0: 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  d value...      
7fb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7fc0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
7fd0: 61 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68  atic string cach
7fe0: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
7ff0: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ory;....      //
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8050: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8060: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
8070: 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a  s field is non-z
8080: 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65  ero, it indicate
8090: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s the..      ///
80a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
80b0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
80c0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
80d0: 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61  not able to loca
80e0: 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  te a..      /// 
80f0: 73 75 69 74 61 62 6c 65 20 61 73 73 65 6d 62 6c  suitable assembl
8100: 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  y directory.  Th
8110: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
8120: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
8130: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
8140: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
8150: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
8160: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
8170: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
8180: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
8190: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
81a0: 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a 20 20 20  rectory" />..   
81b0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
81c0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
81d0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
81e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
81f0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
8200: 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73 65 6d 62  ic bool noAssemb
8210: 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
8220: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8270: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8280: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8290: 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68  This is the cach
82a0: 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ed return value 
82b0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
82c0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
82d0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
82e0: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ame" /> method -
82f0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74  OR- null if that
8300: 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f   method..      /
8310: 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74  // has never ret
8320: 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61  urned a valid va
8330: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
8340: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8350: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
8360: 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 58 6d   string cachedXm
8370: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b  lConfigFileName;
8380: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
8390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83d0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
83e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
83f0: 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69  /// When this fi
8400: 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eld is non-zero,
8410: 20 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68   it indicates th
8420: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
8430: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
8440: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
8450: 20 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20   method was not 
8460: 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61  able to locate a
8470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74  ..      /// suit
8480: 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75  able XML configu
8490: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
84a0: 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
84b0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
84c0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
84d0: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
84e0: 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68  od will check th
84f0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69  is..      /// fi
8500: 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61  eld and skips ca
8510: 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65  lls into the <se
8520: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
8530: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
8540: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
8550: 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20 69  od whenever it i
8560: 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  s non-zero...   
8570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8580: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
8590: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 58   static bool noX
85a0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
85b0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
85c0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
85d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
8620: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8630: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
8640: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
8650: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
8660: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
8670: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
8680: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
8690: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
86a0: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
86b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
86c0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
86d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8720: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8730: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8740: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
8750: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
8760: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
8770: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
8780: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
8790: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
87a0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
87b0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
87c0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
87d0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
87e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
87f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8800: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
8810: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  e()..      {..#i
8820: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
8830: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
8840: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
8850: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8860: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
8870: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
8880: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8890: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
88a0: 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f  If the "No_PreLo
88b0: 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f  adSQLite" enviro
88c0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
88d0: 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20  s set (to..     
88e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
88f0: 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c  ything), skip al
8900: 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f  l our special co
8910: 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65  de and simply re
8920: 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  turn...         
8930: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
8940: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
8950: 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  ue("No_PreLoadSQ
8960: 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  Lite", null) != 
8970: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8980: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
8990: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
89a0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
89b0: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
89c0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
89d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
89e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
89f0: 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 73  Create the lists
8a00: 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 74   of statistics t
8a10: 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  hat will contain
8a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
8a30: 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75       various cou
8a40: 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62 75  nts used in debu
8a50: 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  gging, including
8a60: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
8a70: 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20  //       number 
8a80: 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65  of times each se
8a90: 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20  tting value has 
8aa0: 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20  been read...    
8ab0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8ac0: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
8ad0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e  itialize();..#en
8ae0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
8af0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8b00: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
8b10: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
8b20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8b30: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8b40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f             // TO
8b50: 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  DO: Make sure th
8b60: 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74  is list is updat
8b70: 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72  ed if the suppor
8b80: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
8b90: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
8ba0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
8bb0: 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20  re names and/or 
8bc0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a  platform names..
8bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8be0: 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d         changes..
8bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
8c00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
8c10: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
8c20: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
8c30: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
8c40: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c60: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8c70: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
8c80: 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f  Create the map o
8c90: 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  f processor arch
8ca0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a  itecture names..
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c    //       to pl
8cd0: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69  atform names usi
8ce0: 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73  ng a case-insens
8cf0: 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20  itive string..  
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d10: 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65  //       compare
8d20: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
8d30: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
8d50: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8d60: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20  ePlatforms =..  
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d80: 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61      new Dictiona
8d90: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
8da0: 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g>(..           
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
8dc0: 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72  tringComparer.Or
8dd0: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
8de0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8df0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8e10: 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20  NOTE: Setup the 
8e20: 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d  list of platform
8e30: 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65   names associate
8e40: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
8e50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
8e60: 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64     the supported
8e70: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8e80: 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20  tectures...     
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8eb0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
8ec0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
8ed0: 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69  s.Add("x86", "Wi
8ee0: 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  n32");..        
8ef0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
8f00: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
8f10: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d  latforms.Add("AM
8f20: 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20  D64", "x64");.. 
8f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f40: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
8f50: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
8f60: 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61  Add("IA64", "Ita
8f70: 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  nium");..       
8f80: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
8f90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8fa0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
8fb0: 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a  RM", "WinCE");..
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8fd0: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
8fe0: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
8ff0: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
9000: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9010: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
9020: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
9030: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RY..            
9040: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9050: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
9060: 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20  hat about other 
9070: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
9080: 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ins?..          
9090: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
90a0: 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74        if (_SQLit
90b0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
90c0: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
90d0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
90e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
90f0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
9100: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  aseDirectory = n
9110: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
9120: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
9130: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9140: 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ture = null;....
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9160: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
9170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9180: 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65     SearchForDire
9190: 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  ctory(..        
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
91b0: 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  f baseDirectory,
91c0: 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72   ref processorAr
91d0: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9200: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9210: 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d   Attempt to pre-
9220: 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20  load the SQLite 
9230: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72  core library (or
9240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9250: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74      //       int
9260: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61  erop assembly) a
9270: 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68  nd store both th
9280: 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20  e file name..   
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
92a0: 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69  /       and nati
92b0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
92c0: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65   for later usage
92d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
92e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
92f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47             /* IG
9300: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
9310: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c              PreL
9320: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20  oadSQLiteDll(.. 
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9340: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
9350: 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
9360: 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
9390: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
93a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
93b0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
93c0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
93d0: 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20  eHandle);..     
93e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
93f0: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
9400: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
9410: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9460: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9470: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9480: 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f  /// Combines two
9490: 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a   path strings...
94a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
94b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
94c0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
94d0: 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h1">..      /// 
94e0: 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d  The first path -
94f0: 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20  OR- null...     
9500: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9510: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9520: 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20  name="path2">.. 
9530: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63       /// The sec
9540: 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75  ond path -OR- nu
9550: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
9560: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
9570: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9580: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62      /// The comb
9590: 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67  ined path string
95a0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f   -OR- null if bo
95b0: 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  th of the origin
95c0: 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f  al path..      /
95d0: 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e  // strings are n
95e0: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
95f0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
9600: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
9610: 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d   string MaybeCom
9620: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
9630: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
9640: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  1,..          st
9650: 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20  ring path2..    
9660: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
9670: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9680: 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path1 != null)..
9690: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
96a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
96b0: 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath2 != null).. 
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96d0: 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d   return Path.Com
96e0: 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68  bine(path1, path
96f0: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
9700: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
9710: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9720: 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20  n path1;..      
9730: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
9740: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
9750: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9760: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
9770: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9780: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
9790: 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20  ath2;..         
97a0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
97b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
97c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
97d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
97e0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
97f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9830: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9840: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9850: 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61  // Resets the ca
9860: 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ched XML configu
9870: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
9880: 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72   value, thus for
9890: 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  cing the..      
98a0: 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f  /// next call to
98b0: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43   <see cref="GetC
98c0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
98d0: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
98e0: 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20  d to rely..     
98f0: 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73   /// upon the <s
9900: 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43  ee cref="GetXmlC
9910: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
9920: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63  > method to fetc
9930: 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  h the..      ///
9940: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
9950: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  on file name... 
9960: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9970: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9980: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
9990: 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  esetCachedXmlCon
99a0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20  figFileName().. 
99b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
99c0: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
99d0: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
99e0: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
99f0: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
9a00: 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
9a10: 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
9a20: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
9a30: 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ame");..#endif..
9a40: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
9a50: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
9a60: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
9a70: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
9a80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9a90: 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e      cachedXmlCon
9aa0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  figFileName = nu
9ab0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
9ac0: 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69     noXmlConfigFi
9ad0: 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d  leName = false;.
9ae0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
9af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20  ////////..      
9b50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9b60: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
9b70: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
9b80: 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66   cached XML conf
9b90: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
9ba0: 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20  ame for the..   
9bb0: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
9bc0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d  containing the m
9bd0: 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61  anaged System.Da
9be0: 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e  ta.SQLite compon
9bf0: 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20  ents, if..      
9c00: 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20  /// available.  
9c10: 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58 4d  If the cached XM
9c20: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
9c30: 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20  file name value 
9c40: 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  is not..      //
9c50: 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65  / available, the
9c60: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58   <see cref="GetX
9c70: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
9c80: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
9c90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75  ..      /// be u
9ca0: 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68  sed to obtain th
9cb0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
9cc0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
9cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9ce0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9cf0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
9d00: 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e   /// The XML con
9d10: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
9d20: 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  name -OR- null i
9d30: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
9d40: 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20  etermined..     
9d50: 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74   /// or does not
9d60: 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f   exist...      /
9d70: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
9d80: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9d90: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61  tic string GetCa
9da0: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
9db0: 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b  eName()..      {
9dc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
9dd0: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
9de0: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
9df0: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
9e00: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
9e10: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
9e20: 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  _GetCachedXmlCon
9e30: 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a  figFileName");..
9e40: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
9e50: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
9e60: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9e70: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
9e80: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9ea0: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
9eb0: 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  ileName != null)
9ec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9ed0: 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65      return cache
9ee0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
9ef0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
9f00: 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f       if (noXmlCo
9f10: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20  nfigFileName).. 
9f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f30: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9f40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
9f50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
9f60: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
9f70: 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ame();..      }.
9f80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fd0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9fe0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9ff0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
a000: 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63  eturns the XML c
a010: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
a020: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61  e name for the a
a030: 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f  ssembly..      /
a040: 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  // containing th
a050: 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d  e managed System
a060: 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d  .Data.SQLite com
a070: 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20  ponents...      
a080: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a090: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
a0a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
a0b0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
a0c0: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d  tion file name -
a0d0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
a0e0: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
a0f0: 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ned..      /// o
a100: 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  r does not exist
a110: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
a120: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
a130: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
a140: 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69  ring GetXmlConfi
a150: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
a160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a170: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
a180: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
a190: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
a1a0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
a1b0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
a1c0: 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69  thod_GetXmlConfi
a1d0: 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65  gFileName");..#e
a1e0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
a1f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
a200: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
a210: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
a220: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
a230: 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Name;....#if !PL
a240: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a250: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
a260: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41     directory = A
a270: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
a280: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
a290: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
a2a0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62   fileName = Mayb
a2b0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
a2c0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
a2d0: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
a2e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
a2f0: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
a300: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
a310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a320: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
a330: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
a340: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a350: 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64            cached
a360: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
a370: 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  e = fileName;.. 
a380: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a3a0: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
a3b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
a3c0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
a3d0: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
a3e0: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
a3f0: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20  Directory();..  
a400: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
a410: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
a420: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
a430: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
a440: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
a450: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
a460: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
a470: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a480: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
a490: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4c0: 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67   cachedXmlConfig
a4d0: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e  FileName = fileN
a4e0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
a4f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a500: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
a510: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
a520: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a530: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
a540: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
a550: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a560: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
a570: 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d  ileName = true;.
a580: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
a590: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a5a0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
a5b0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a600: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
a610: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a620: 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72   /// If necessar
a630: 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20  y, replaces all 
a640: 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f  supported XML co
a650: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
a660: 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f   tokens..      /
a670: 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73  // with their as
a680: 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e  sociated values.
a690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a6a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a6b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
a6c0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
a6d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
a6e0: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
a6f0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e  ration file bein
a700: 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  g read...      /
a710: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
a720: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a730: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
a740: 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67     /// A setting
a750: 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d   value read from
a760: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
a770: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
a780: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
a790: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
a7a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
a7b0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
a7c0: 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  e <paramref name
a7d0: 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c  ="value" /> will
a7e0: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
a7f0: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
a800: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
a810: 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64   tokens replaced
a820: 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c  .  No return val
a830: 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a  ue is reserved..
a840: 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64        /// to ind
a850: 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20  icate an error. 
a860: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e   This method can
a870: 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20  not fail...     
a880: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
a890: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
a8a0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70  tatic string Rep
a8b0: 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  laceXmlConfigFil
a8c0: 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20  eTokens(..      
a8d0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
a8e0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
a8f0: 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
a900: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
a910: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
a920: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
a930: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
a940: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
a950: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a960: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
a970: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
a980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a990: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a9a0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
a9b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9d0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
a9e0: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
a9f0: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
aa00: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
aa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa20: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
aa30: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
aa40: 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
aa60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
aa80: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
aa90: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aab0: 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63    XmlConfigDirec
aac0: 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
aad0: 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
aae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
aaf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab00: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
ab10: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ab20: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
ab40: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
ab50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
ab60: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ab70: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
ab80: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ab90: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
aba0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
abb0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abd0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abf0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ac00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
ac10: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
ac20: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
ac30: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac50: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
ac60: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
ac70: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
ac80: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
ac90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aca0: 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
acb0: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
acc0: 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20  place XML " +.. 
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ace0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f               "co
acf0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
ad00: 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a   \"{0}\" tokens:
ad10: 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad30: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
ad40: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
ad50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad60: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ad70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad80: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
ad90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ada0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
adb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
adc0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
add0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ade0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
adf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ae00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
ae10: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
ae20: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
ae30: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
ae40: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
aea0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aeb0: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
aec0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
aed0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
aee0: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
aef0: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
af00: 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d  /// specified XM
af10: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
af20: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
af30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
af40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
af50: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
af60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
af70: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
af80: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
af90: 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   to read...     
afa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
afb0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
afc0: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
afd0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
afe0: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
aff0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
b000: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
b010: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
b020: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
b030: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
b040: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
b050: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
b060: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
b070: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
b080: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
b090: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
b0a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
b0b0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
b0c0: 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a  name="expand">..
b0d0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
b0e0: 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79  ro to expand any
b0f0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
b100: 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73  iable references
b110: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20   contained in.. 
b120: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74       /// the set
b130: 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65  ting value to be
b140: 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73   returned.  This
b150: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
b160: 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
b170: 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72    /// Compact Fr
b180: 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20  amework...      
b190: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
b1a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
b1b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
b1c0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
b1d0: 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
b1e0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
b1f0: 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
b200: 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
b210: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
b220: 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
b230: 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
b240: 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
b250: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
b260: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
b270: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b280: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b290: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74  ic string GetSet
b2a0: 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43  tingValueViaXmlC
b2b0: 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20  onfigFile(..    
b2c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
b2d0: 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  eName, /* in */.
b2e0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
b2f0: 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69  g name,     /* i
b300: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
b310: 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c  string @default,
b320: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
b330: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
b340: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
b350: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b360: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b370: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
b380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b390: 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d  if ((fileName ==
b3a0: 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20   null) || (name 
b3b0: 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
b3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b3d0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
b3e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
b3f0: 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d  mlDocument docum
b400: 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63  ent = new XmlDoc
b410: 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ument();....    
b420: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
b430: 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65  nt.Load(fileName
b440: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
b450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b460: 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  XmlElement eleme
b470: 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65  nt = document.Se
b480: 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d  lectSingleNode(.
b490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b4a0: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
b4b0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
b4c0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
b4d0: 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
b4f0: 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61  /configuration/a
b500: 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40  ppSettings/add[@
b510: 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d  key='{0}']", nam
b520: 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20  e)) as..        
b530: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
b540: 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ment; /* throw *
b550: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
b560: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21     if (element !
b570: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
b580: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b590: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
b5a0: 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b  ng value = null;
b5b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b5c0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
b5d0: 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22  t.HasAttribute("
b5e0: 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20  value"))..      
b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b600: 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e  value = element.
b610: 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61  GetAttribute("va
b620: 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lue");....      
b630: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b640: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
b650: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
b660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b670: 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
b680: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b690: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
b6a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
b6b0: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
b6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6d0: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
b6e0: 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72  ment.ExpandEnvir
b6f0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28  onmentVariables(
b700: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b720: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
b730: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
b740: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
b750: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
b760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b770: 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
b780: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
b790: 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20  okens(fileName, 
b7a0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
b7b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7d0: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
b7e0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b800: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
b810: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
b820: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
b830: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
b840: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
b850: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
b860: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
b870: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
b880: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
b890: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
b8a0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
b8b0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
b8c0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
b8d0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b900: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
b910: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
b920: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
b950: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
b960: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
b970: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
b980: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
b990: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
b9a0: 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b   get setting \"{
b9b0: 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a  0}\" value " +..
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9d0: 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20        "from XML 
b9e0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
b9f0: 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22  le \"{1}\": {2}"
ba00: 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  , name,..       
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
ba20: 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ileName, e)); /*
ba30: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
ba40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ba50: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
ba60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
ba70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba80: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
ba90: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
baa0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
bab0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
bac0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
bad0: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  fault;..      }.
bae0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
baf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
bb40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bb50: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
bb60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
bb70: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
bb80: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
bb90: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
bba0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
bbb0: 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f  that is..      /
bbc0: 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
bbd0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
bbe0: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
bbf0: 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  y, if applicable
bc00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
bc10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
bc20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
bc30: 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20  assembly">..    
bc40: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
bc50: 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65  d assembly to re
bc60: 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66 72  ad the target fr
bc70: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
bc80: 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  e value..      /
bc90: 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  // from...      
bca0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
bcb0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
bcc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
bcd0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61   value of the ta
bce0: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
bcf0: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 66  ttribute value f
bd00: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
bd10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61  ..      /// mana
bd20: 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52  ged assembly -OR
bd30: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
bd40: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
bd50: 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20  d.  If this..   
bd60: 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20     /// assembly 
bd70: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
bd80: 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  h a version of t
bd90: 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
bda0: 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  k prior to..    
bdb0: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e    /// version 4.
bdc0: 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  0, the value ret
bdd0: 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63  urned MAY reflec
bde0: 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f  t that version o
bdf0: 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  f the .NET..    
be00: 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20    /// Framework 
be10: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f  instead of the o
be20: 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ne associated wi
be30: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
be40: 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20   managed..      
be50: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  /// assembly... 
be60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
be70: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
be80: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
be90: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
bea0: 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20  etFramework(..  
beb0: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
bec0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
bed0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
bee0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
bef0: 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
bf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
bf10: 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54  if NET_40 || NET
bf20: 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c  _45 || NET_451 |
bf30: 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54  | NET_452 || NET
bf40: 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c  _46 || NET_461 |
bf50: 7c 20 4e 45 54 5f 34 36 32 0d 0a 20 20 20 20 20  | NET_462..     
bf60: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
bf70: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf90: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
bfa0: 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
bfd0: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
bfe0: 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c010: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
c020: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
c030: 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  te targetFramewo
c040: 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  rk =..          
c050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c060: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
c070: 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20  Attribute)..    
c080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c090: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47        assembly.G
c0a0: 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74  etCustomAttribut
c0b0: 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0d0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
c0e0: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
c0f0: 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d  te), false)[0];.
c100: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c110: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c120: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e  targetFramework.
c130: 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a  FrameworkName;..
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c160: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c170: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
c180: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c1a0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
c1c0: 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20  elif NET_35..   
c1d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c1e0: 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
c1f0: 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d  ,Version=v3.5";.
c200: 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20  .#elif NET_20.. 
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c220: 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f  urn ".NETFramewo
c230: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22  rk,Version=v2.0"
c240: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
c250: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c260: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
c270: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
c280: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c2d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c2e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
c2f0: 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61  ccepts a long ta
c300: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
c310: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61  ttribute value a
c320: 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f  nd makes it into
c330: 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75   a..      /// mu
c340: 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69  ch shorter versi
c350: 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72  on, suitable for
c360: 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20   use with NuGet 
c370: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20  packages...     
c380: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c390: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
c3a0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
c3b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c  .      /// The l
c3c0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
c3d0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
c3e0: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
c3f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
c400: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
c410: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
c420: 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74   /// The short t
c430: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
c440: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
c450: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
c460: 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  cannot..      //
c470: 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  / be determined 
c480: 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20  or converted... 
c490: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
c4a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
c4b0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
c4c0: 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
c4d0: 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
c4e0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
c4f0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
c500: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
c510: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
c520: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
c530: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
c540: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
c550: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
c560: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
c570: 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65  place(".NETFrame
c580: 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
c590: 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20   "net");..      
c5a0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
c5b0: 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53  e.Replace(".", S
c5c0: 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d  tring.Empty);...
c5d0: 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69  .          int i
c5e0: 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64  ndex = value.Ind
c5f0: 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20  exOf(',');....  
c600: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
c610: 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
c620: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
c630: 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28  value.Substring(
c640: 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  0, index);....  
c650: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
c660: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
c670: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
c680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
c6d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c6e0: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
c6f0: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
c700: 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e  upported environ
c710: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
c720: 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  kens..      /// 
c730: 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63  with their assoc
c740: 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  iated values... 
c750: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c760: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
c770: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
c780: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
c790: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
c7a0: 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69  ead from an envi
c7b0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
c7c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
c7d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
c7e0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
c7f0: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
c800: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
c810: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
c820: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
c830: 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ted..      /// e
c840: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
c850: 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61  ble tokens repla
c860: 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20  ced.  No return 
c870: 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65  value is reserve
c880: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  d..      /// to 
c890: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f  indicate an erro
c8a0: 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  r.  This method 
c8b0: 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20  cannot fail...  
c8c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
c8d0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
c8e0: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
c8f0: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
c900: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
c910: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
c920: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
c930: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
c940: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
c950: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
c960: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
c970: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c980: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c990: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43  directory = GetC
c9a0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
c9b0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
c9c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
c9d0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
c9e0: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
c9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ca00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ca10: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca40: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
ca50: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca70: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44         AssemblyD
ca80: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
ca90: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
cab0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
cac0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
cad0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
cae0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
caf0: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
cb00: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
cb10: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
cb20: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
cb30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb40: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
cb50: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
cb60: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
cb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb80: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbb0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
cbc0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
cbd0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
cbe0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc00: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
cc10: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
cc20: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
cc30: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc50: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
cc60: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
cc70: 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20   assembly " +.. 
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 69               "di
cca0: 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b  rectory token: {
ccb0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
ccc0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd30: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
cd60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cd70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
cd80: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cd90: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
cda0: 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b  assembly = null;
cdb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cdc0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
cdd0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cde0: 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
cdf0: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
ce00: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
ce10: 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ly();..         
ce20: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
ce30: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
ce40: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
ce50: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ce60: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
ce70: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
ce80: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
ce90: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ceb0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
cec0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
ced0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
cee0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
cef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
cf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf10: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
cf20: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
cf30: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
cf40: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
cf60: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
cf70: 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69  ntCulture, "Nati
cf80: 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a  ve library " +..
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfa0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
cfb0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
cfc0: 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67  obtain executing
cfd0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
cfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cff0: 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c  "assembly: {0}",
d000: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
d010: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
d020: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d030: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
d040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d050: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d060: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
d070: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d090: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d0a0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d0b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
d0c0: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
d0d0: 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61 72   = AbbreviateTar
d0e0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
d0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d100: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
d110: 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65  etFramework(asse
d120: 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly));....     
d130: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
d140: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
d150: 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f  ty(targetFramewo
d160: 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rk))..          
d170: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d180: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d1b0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
d1c0: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d   value.Replace(.
d1d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d1e0: 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
d1f0: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c  tFrameworkToken,
d200: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
d210: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d220: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
d230: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
d240: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d260: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
d270: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
d280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
d290: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
d2a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d2b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
d2c0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
d2d0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
d2e0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
d2f0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d310: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d330: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
d340: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
d350: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
d360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d370: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
d380: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
d390: 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
d3a0: 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3c0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
d3d0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
d3e0: 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74 20   replace target 
d3f0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
d400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d410: 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f     "framework to
d420: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
d430: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
d440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d450: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d460: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
d470: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
d480: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4a0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
d4b0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
d4c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
d4d0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
d4e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d4f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d500: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d510: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
d520: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  ue;..      }..#e
d530: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
d540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d580: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
d590: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d5a0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
d5b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
d5c0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
d5d0: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
d5e0: 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20  using the XML.. 
d5f0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
d600: 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f  ration file and/
d610: 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  or the environme
d620: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72  nt variables for
d630: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
d640: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20      /// process 
d650: 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65  and/or the curre
d660: 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20  nt system, when 
d670: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
d680: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
d6a0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
d6b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
d6c0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
d6d0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
d6e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
d6f0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d700: 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20  default">..     
d710: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
d720: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  o be returned if
d730: 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73   the setting has
d740: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
d750: 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20  plicitly..      
d760: 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65  /// or cannot be
d770: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
d780: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
d790: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
d7a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
d7b0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
d7c0: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
d7d0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
d7e0: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
d7f0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
d800: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
d810: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
d820: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
d830: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
d840: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
d850: 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64  etermined.  By d
d860: 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65  efault, all refe
d870: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
d880: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ng..      /// en
d890: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
d8a0: 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61  les will be expa
d8b0: 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f  nded to their co
d8c0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75  rresponding valu
d8d0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  es..      /// wi
d8e0: 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74  thin the value t
d8f0: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e  o be returned un
d900: 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20  less either the 
d910: 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a  "No_Expand" or..
d920: 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78        /// "No_Ex
d930: 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e  pand_<paramref n
d940: 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65  ame="name" />" e
d950: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
d960: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a  ble is set [to..
d970: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69        /// anythi
d980: 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ng]...      /// 
d990: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
d9a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d9b0: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
d9c0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
d9d0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
d9e0: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
d9f0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
da00: 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a  @default /* in *
da10: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
da20: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
da30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
da40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
da50: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
da60: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
da70: 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c   special "No_SQL
da80: 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
da90: 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ue" environment.
daa0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
dab0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
dac0: 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
dad0: 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
dae0: 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  ill always..    
daf0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
db00: 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c  eturn the defaul
db10: 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  t value...      
db20: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
db30: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
db40: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
db50: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
db60: 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
db70: 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56  QLiteGetSettingV
db80: 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  alue") != null).
db90: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dbb0: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20  rn @default;..  
dbc0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
dbd0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
dc30: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
dc40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dc50: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
dc60: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
dc70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
dc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dcb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
dcc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
dcd0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
dce0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
dcf0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
dd00: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
dd10: 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
dd20: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
dd30: 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  rom the environm
dd40: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
dd50: 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69  /       or possi
dd60: 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  bly from the XML
dd70: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
dd80: 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a  ile; create or..
dd90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
dda0: 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65     increment the
ddb0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74 61   appropriate sta
ddc0: 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20  tistic now...   
ddd0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dde0: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
ddf0: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
de00: 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66  eadCount(name, f
de10: 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alse);..#endif..
de20: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
de30: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
de40: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
de50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de80: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
de90: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
dea0: 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52   = true; /* SHAR
deb0: 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20  ED: Environment 
dec0: 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67  -AND- XML config
ded0: 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20   file. */....   
dee0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
def0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
df30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
df40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
df50: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
df60: 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
df70: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
df80: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
df90: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
dfa0: 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
dfb0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
dfc0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dfd0: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
dfe0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
dff0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
e000: 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
e010: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
e020: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
e030: 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
e040: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
e050: 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
e060: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
e070: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
e080: 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70           "No_Exp
e090: 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29  and_{0}", name))
e0a0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
e0b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e0c0: 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
e0d0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
e0e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e0f0: 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
e100: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
e110: 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29  ntVariable(name)
e120: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
e130: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
e140: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
e150: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e170: 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20  (expand)..      
e180: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
e190: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
e1a0: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
e1b0: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
e1c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e1d0: 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
e1e0: 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
e1f0: 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c  riableTokens(val
e200: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
e210: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
e220: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
e230: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e240: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
e250: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e260: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
e270: 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51  E: If the "No_SQ
e280: 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  LiteXmlConfigFil
e290: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
e2a0: 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20  ariable is..    
e2b0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
e2c0: 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d  et [to anything]
e2d0: 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  , this method wi
e2e0: 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66 72  ll NEVER read fr
e2f0: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
e300: 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63    //       XML c
e310: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
e320: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
e330: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
e340: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
e350: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
e360: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
e370: 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58       "No_SQLiteX
e380: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21  mlConfigFile") !
e390: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
e3a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e3b0: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
e3c0: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ult;..          
e3d0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
e3e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e430: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
e440: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
e450: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
e460: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
e470: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e480: 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
e490: 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
e4a0: 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d  alue from the XM
e4b0: 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  L..          // 
e4c0: 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
e4d0: 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65  ion file; create
e4e0: 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68   or increment th
e4f0: 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
e500: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
e510: 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e    statistic now.
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e530: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
e540: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74  ata.IncrementSet
e550: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61  tingReadCount(na
e560: 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64  me, true);..#end
e570: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
e580: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
e590: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e5e0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e5f0: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56  GetSettingValueV
e600: 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28  iaXmlConfigFile(
e610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e620: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
e630: 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61  igFileName(), na
e640: 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78  me, @default, ex
e650: 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pand);..      }.
e660: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
e670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6b0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
e6c0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e6d0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76  WORK..      priv
e6e0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
e6f0: 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49  g ListToString(I
e700: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
e710: 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  t)..      {..   
e720: 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20         if (list 
e730: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e740: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
e750: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
e760: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
e770: 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72  result = new Str
e780: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
e790: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
e7a0: 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65  ch (string eleme
e7b0: 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20  nt in list)..   
e7c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e7d0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
e7e0: 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent == null)..  
e7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e800: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
e810: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
e820: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
e830: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e840: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
e850: 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20  nd(' ');....    
e860: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
e870: 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29  .Append(element)
e880: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
e890: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
e8a0: 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69  rn result.ToStri
e8b0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ng();..      }..
e8c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
e8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
e920: 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68  te static int Ch
e930: 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75  eckForArchitectu
e940: 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28  resAndPlatforms(
e950: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
e960: 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
e970: 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73           ref Lis
e980: 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
e990: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
e9a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e9b0: 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
e9c0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
e9d0: 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e  if (matches == n
e9e0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e9f0: 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65      matches = ne
ea00: 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29  w List<string>()
ea10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
ea20: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
ea30: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
ea40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ea50: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
ea60: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
ea70: 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20  tory) &&..      
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f              (pro
ea90: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
eaa0: 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e  rePlatforms != n
eab0: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
eac0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ead0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
eae0: 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c  h (KeyValuePair<
eaf0: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
eb00: 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20  pair..          
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb20: 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72    in processorAr
eb30: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
eb40: 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rms)..          
eb50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
eb80: 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69  xists(MaybeCombi
eb90: 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
eba0: 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20  , pair.Key))).. 
ebb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebc0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ebd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebe0: 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61    matches.Add(pa
ebf0: 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ir.Key);..      
ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec10: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec30: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70  string value = p
ec60: 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20  air.Value;....  
ec70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec80: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
ec90: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
eca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecb0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
ecc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecd0: 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
ece0: 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
ecf0: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
ed00: 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a  tory, value)))..
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76     matches.Add(v
ed50: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed70: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
eda0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
edb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
edc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
edd0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
ede0: 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lt;..      }....
edf0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ee40: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
ee50: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65   static bool Che
ee60: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
ee70: 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  se(..          A
ee80: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
ee90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
eea0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
eeb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
eec0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
eed0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
eee0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
eef0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d    if (assembly =
ef00: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ef10: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ef20: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
ef30: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
ef40: 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65   codeBase = asse
ef50: 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a  mbly.CodeBase;..
ef60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef70: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
ef80: 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73  lOrEmpty(codeBas
ef90: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
efa0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
efb0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
efc0: 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20        Uri uri = 
efd0: 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65  new Uri(codeBase
efe0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
eff0: 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69    string localFi
f000: 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63  leName = uri.Loc
f010: 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  alPath;....     
f020: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
f030: 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46  le.Exists(localF
f040: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
f050: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f060: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
f070: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
f080: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
f090: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
f0a0: 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
f0b0: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69           localFi
f0c0: 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
f0d0: 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  w */....        
f0e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c        string xml
f0f0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
f100: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
f110: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
f120: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c        directory,
f130: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
f140: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
f150: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
f160: 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46  xists(xmlConfigF
f170: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
f180: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
f190: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
f1a0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
f1b0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
f1c0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
f1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1f0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
f200: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
f210: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
f220: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f230: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
f240: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
f250: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f270: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
f280: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
f290: 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ound XML configu
f2a0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d  ration file " +.
f2b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f2c0: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
f2d0: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
f2e0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
f2f0: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
f300: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
f310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f320: 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
f330: 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
f340: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
f350: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f360: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
f370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f380: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f390: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
f3a0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f3c0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
f3e0: 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
f3f0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
f400: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f410: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
f420: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f430: 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74           List<st
f440: 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20  ring> matches = 
f450: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
f460: 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b         if (Check
f470: 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
f480: 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72  AndPlatforms(dir
f490: 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63  ectory, ref matc
f4a0: 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20  hes) > 0)..     
f4b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
f4c0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
f4d0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
f4e0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
f4f0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
f500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f520: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
f530: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
f540: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
f550: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f560: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
f570: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
f580: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
f590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5a0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
f5b0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
f5c0: 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d  ound native sub-
f5d0: 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d  directories " +.
f5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f5f0: 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
f600: 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
f610: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
f620: 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
f630: 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
f640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f650: 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61   ListToString(ma
f660: 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72  tches))); /* thr
f670: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
f680: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
f6a0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
f6b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6d0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6f0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
f700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f710: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
f720: 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f740: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
f750: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f770: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
f780: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
f790: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
f7a0: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
f7b0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
f7c0: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
f7d0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
f7e0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
f7f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f800: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
f810: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
f820: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
f830: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
f840: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
f850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f860: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
f870: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
f880: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
f890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8a0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
f8b0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
f8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f8d0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
f8e0: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
f8f0: 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63  r failed to chec
f900: 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d  k code base " +.
f910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f920: 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
f930: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
f940: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
f950: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
f960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f970: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
f980: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
f990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f9a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
f9b0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
f9c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
f9d0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
f9e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
f9f0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
fa00: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
fa10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
fa60: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
fa70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  ry>..      /// R
fa80: 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64  esets the cached
fa90: 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74   assembly direct
faa0: 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20  ory value, thus 
fab0: 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74  forcing the next
fac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c  ..      /// call
fad0: 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47   to <see cref="G
fae0: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
faf0: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
fb00: 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20  thod to rely..  
fb10: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65      /// upon the
fb20: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
fb30: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
fb40: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66  " /> method to f
fb50: 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20  etch the..      
fb60: 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72  /// assembly dir
fb70: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
fb80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
fb90: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
fba0: 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43 61  tic void ResetCa
fbb0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
fbc0: 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
fbd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
fbe0: 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
fbf0: 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
fc00: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
fc10: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
fc20: 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
fc30: 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65  _ResetCachedAsse
fc40: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
fc50: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
fc60: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
fc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
fc80: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
fc90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
fca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
fcb0: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
fcc0: 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
fcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
fce0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
fcf0: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
fd00: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
fd10: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd60: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
fd70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
fd80: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
fd90: 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68 65  eturns the cache
fda0: 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  d directory for 
fdb0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
fdc0: 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  rently..      //
fdd0: 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  / being executed
fde0: 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20  , if available. 
fdf0: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 61   If the cached a
fe00: 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
fe10: 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  y value..      /
fe20: 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  // is not availa
fe30: 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ble, the <see cr
fe40: 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44  ef="GetAssemblyD
fe50: 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
fe60: 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
fe70: 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f  /// be used to o
fe80: 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62  btain the assemb
fe90: 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
fea0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
feb0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
fec0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
fed0: 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
fee0: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
fef0: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
ff00: 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
ff10: 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
ff20: 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
ff30: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
ff40: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
ff50: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
ff60: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
ff70: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
ff80: 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
ff90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ffa0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
ffb0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
ffc0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
ffd0: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
ffe0: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
fff0: 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41  ethod_GetCachedA
10000 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
10010 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
10020 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
10030 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  n....          l
10040 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
10050 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
10060 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10070 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65 6d   if (cachedAssem
10080 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20  blyDirectory != 
10090 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
100a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
100b0 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  cachedAssemblyDi
100c0 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20  rectory;....    
100d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
100e0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
100f0 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
10100 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
10110 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  l;..          }.
10120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
10130 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
10140 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
10150 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
10160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
101a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
101b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
101c0 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
101d0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
101e0 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
101f0 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
10200 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
10210 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
10220 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
10230 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
10240 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
10250 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
10260 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
10270 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
10280 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
10290 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
102a0 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
102b0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
102c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
102d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
102e0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
102f0 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
10300 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
10310 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
10320 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
10330 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
10340 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
10350 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
10360 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
10370 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  d_GetAssemblyDir
10380 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
10390 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
103a0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
103b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
103c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
103d0 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
103e0 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
103f0 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
10400 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
10410 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
10420 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
10430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10440 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10450 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
10460 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
10470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10490 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
104a0 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
104b0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
104c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
104e0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
104f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10500 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
10510 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
10520 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
10530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10540 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
10550 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
10560 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
10570 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
10580 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
10590 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
105a0 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
105c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
105d0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
105e0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
105f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10610 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
10620 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
10630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10640 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10650 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10660 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
10670 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10680 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
10690 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d  me = assemblyNam
106a0 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c  e.CodeBase;..#el
106b0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
106c0 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65    if (!CheckAsse
106d0 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73  mblyCodeBase(ass
106e0 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e  embly, ref fileN
106f0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
10700 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
10710 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  e = assembly.Loc
10720 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ation;..#endif..
10730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10740 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
10750 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
10760 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
10770 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10780 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
10790 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
107c0 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
107d0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
107e0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
107f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10810 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
10820 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
10830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
10840 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
10850 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
10860 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65  oryName(fileName
10870 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10880 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
10890 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
108a0 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
108b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
108c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
108d0 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
108e0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
108f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
10910 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
10920 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10940 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10950 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
10960 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10970 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10980 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
10990 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
109a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
109b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
109c0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
109d0 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72  ctory = director
109e0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
109f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10a00 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
10a10 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
10a20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
10a30 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
10a40 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
10a50 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
10a60 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
10a70 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
10a80 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
10a90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
10aa0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
10ab0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
10ac0 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
10ad0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
10ae0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10af0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
10b00 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
10b10 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
10b20 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
10b50 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b70 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
10b80 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
10b90 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72 65  iled to get dire
10ba0 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  ctory " +..     
10bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10bc0 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20   "for currently 
10bd0 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
10be0 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
10bf0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
10c00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
10c10 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
10c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10c40 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
10c50 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
10c60 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
10c70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10c80 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
10c90 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
10ca0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10cb0 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
10cc0 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
10cd0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
10ce0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
10cf0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
10d00 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
10d10 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
10d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10d70 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
10d80 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
10d90 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
10da0 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
10db0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
10dc0 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
10dd0 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
10de0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
10df0 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
10e00 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
10e10 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
10e20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
10e30 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
10e40 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
10e50 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
10e60 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
10e70 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
10e80 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
10e90 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
10ea0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
10eb0 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
10ec0 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
10ed0 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
10ee0 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
10ef0 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
10f00 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
10f10 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
10f20 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
10f30 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
10f40 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
10f50 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
10f60 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
10f70 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
10f80 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
10f90 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
10fa0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
10fb0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10fc0 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
10fd0 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
10fe0 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
10ff0 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
11000 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
11010 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
11020 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
11030 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
11040 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
11050 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
11060 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
11070 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11080 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
11090 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
110a0 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
110b0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
110c0 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
110d0 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
110e0 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
110f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11100 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
11110 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
11120 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
11130 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
11140 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
11150 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
11160 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
11170 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
111c0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
111d0 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
111e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
111f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
11200 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
11210 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
11220 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
11230 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
11240 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11250 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
11260 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
11270 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
11280 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
11290 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
112a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
112e0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
112f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11300 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
11310 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
11320 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
11330 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
11340 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
11350 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
11360 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
11370 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11380 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
11390 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
113a0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
113b0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
113c0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
113d0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
113e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
11430 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11440 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
11450 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
11460 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
11470 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
11480 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
11490 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
114a0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
114b0 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
114c0 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
114d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
114e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
114f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
11500 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
11510 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
11520 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
11530 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
11540 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
11550 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
11560 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
11570 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
11580 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
11590 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
115a0 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
115b0 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
115c0 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
115d0 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
115e0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
115f0 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
11600 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
11610 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
11620 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
11630 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
11640 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
11650 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
11660 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
11670 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
11680 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11690 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
116a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
116b0 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
116c0 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
116d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
116e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11720 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
11730 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11740 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
11750 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
11760 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
11770 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
11780 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
11790 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
117a0 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
117b0 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
117c0 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
117d0 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
117e0 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
117f0 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
11800 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
11810 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11820 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
11830 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
11840 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
11850 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
11860 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
11870 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
11880 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
11890 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
118a0 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
118b0 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
118c0 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
118d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
118e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
118f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
11900 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
11910 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
11920 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
11930 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
11940 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
11950 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
11960 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
11970 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
11980 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
11990 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
119a0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
119b0 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
119c0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
119d0 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
119e0 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
119f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
11a00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11a10 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
11a20 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
11a30 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
11a40 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
11a50 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
11a60 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
11a70 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
11a80 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
11a90 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
11aa0 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
11ab0 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
11ac0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
11ad0 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
11ae0 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
11af0 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
11b00 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
11b10 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
11b20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
11b30 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
11b40 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
11b50 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
11b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b70 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
11b80 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
11b90 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
11ba0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
11bb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11bc0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11bd0 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
11be0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
11bf0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11c00 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
11c10 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
11c20 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
11c30 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
11c40 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
11c50 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
11c60 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
11c70 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
11c80 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
11c90 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
11ca0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
11cb0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
11cc0 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
11cd0 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
11ce0 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
11cf0 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
11d00 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11d20 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
11d30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
11d40 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
11d50 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
11d60 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
11d70 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
11d80 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
11d90 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
11da0 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
11db0 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
11dc0 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
11dd0 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
11de0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
11df0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
11e00 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
11e10 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
11e20 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
11e30 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
11e40 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
11e50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11e60 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
11e70 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
11e80 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
11e90 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
11ea0 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
11eb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11ec0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
11ed0 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
11ee0 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
11ef0 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
11f00 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
11f10 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
11f20 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
11f30 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
11f40 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
11f50 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
11f60 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
11f70 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
11f80 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
11f90 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
11fa0 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
11fb0 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
11fc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11fd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
11fe0 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
11ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12000 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
12010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
12020 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
12030 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
12040 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
12050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12070 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
12080 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
12090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120a0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
120b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120c0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
120d0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
120e0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
120f0 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
12110 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
12120 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
12130 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12150 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
12160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12170 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
12190 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
121a0 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
121b0 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
121c0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
121d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
121e0 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
121f0 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
12200 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
12230 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
12240 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
12250 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
12260 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
12270 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
12280 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
122a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
122b0 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
122c0 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
122f0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
12300 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
12330 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12350 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
12360 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
12370 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
12380 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123a0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
123b0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
123c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123e0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
123f0 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
12400 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
12410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12430 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
12440 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
12450 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
12460 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12480 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
12490 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
124a0 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
124b0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
124c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
124d0 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
124e0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12500 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
12520 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
12530 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12550 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
12560 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12580 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125a0 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
125b0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125d0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
125e0 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
125f0 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
12600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12610 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
12620 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
12630 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12640 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12660 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12670 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
12680 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
12690 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126e0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
126f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
12700 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
12710 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
12720 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
12730 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
12740 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
12750 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
12760 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12770 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
12780 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
12790 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
127a0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
127b0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
127c0 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
127d0 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
127e0 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
127f0 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
12800 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
12810 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
12820 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
12830 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
12840 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
12850 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
12860 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
12870 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
12880 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
12890 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
128a0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
128b0 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
128c0 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
128d0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
128e0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
128f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
12900 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
12910 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
12920 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
12930 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
12950 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
12960 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
12970 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
12980 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
12990 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
129a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
129b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
129c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
129d0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
129e0 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
129f0 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
12a00 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
12a10 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
12a20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
12a30 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
12a40 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
12a50 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
12a60 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
12a70 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
12a80 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
12a90 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
12aa0 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
12ab0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
12ac0 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
12ad0 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
12ae0 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
12af0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
12b00 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
12b10 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
12b20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12b30 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
12b40 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b60 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
12b70 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
12b80 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
12b90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12ba0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12bb0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
12bc0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
12bd0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
12be0 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
12bf0 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
12c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c10 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
12c20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
12c30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
12c40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
12c50 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
12c60 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
12c70 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
12c80 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
12c90 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
12ca0 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
12cb0 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
12cc0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
12cd0 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
12ce0 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
12cf0 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
12d00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
12d10 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12d20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
12d30 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
12d40 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
12d50 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
12d60 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
12d70 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
12d80 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
12d90 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
12da0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
12db0 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
12dc0 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
12dd0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
12de0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
12e40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
12e50 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
12e60 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
12e70 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
12e80 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
12e90 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
12ea0 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
12eb0 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
12ec0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12ed0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
12ee0 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
12ef0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
12f00 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
12f10 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
12f20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
12f30 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
12f40 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12f50 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
12f60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
12f70 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
12f80 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
12f90 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
12fa0 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
12fb0 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
12fc0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
12fd0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
12fe0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
12ff0 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
13000 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
13010 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
13020 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
13030 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
13040 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
13050 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
13060 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
13070 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
13080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
13090 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
130a0 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
130b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
130c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130d0 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
130e0 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
130f0 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13110 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
13120 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
13130 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
13170 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
13180 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
13190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
131a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
131b0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
131c0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
131d0 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
131e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
131f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
13240 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13250 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
13260 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
13270 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
13280 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
13290 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
132a0 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
132b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
132c0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
132d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
132e0 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
132f0 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
13300 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
13310 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
13320 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
13330 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
13340 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13350 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13360 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
13370 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
13380 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
13390 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
133a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
133b0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
133c0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
133d0 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
133e0 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
133f0 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
13400 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
13410 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
13420 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
13430 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
13440 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
13450 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
13460 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
13470 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
13480 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
13490 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
134a0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
134b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
134c0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
134d0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
134e0 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
134f0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
13500 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
13510 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
13520 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13530 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
13540 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
13550 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13560 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
13570 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
13580 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
13590 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
135a0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
135b0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
135c0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
135d0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
135e0 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
135f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13640 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13650 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13660 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
13670 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
13680 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
13690 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
136a0 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
136b0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
136c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
136d0 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
136e0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
136f0 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
13700 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
13710 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
13720 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
13730 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
13740 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
13750 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
13760 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
13770 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
13780 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
13790 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
137a0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
137b0 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
137c0 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
137d0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
137e0 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
137f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
13800 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
13810 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
13820 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
13830 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
13840 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
13850 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
13860 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
13870 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
13880 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13890 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
138a0 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
138b0 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
138c0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
138d0 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
138e0 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
138f0 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
13900 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
13910 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
13920 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
13930 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
13940 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
13950 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
13960 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
13970 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13980 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
13990 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
139a0 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
139b0 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
139c0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
139d0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
139e0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
139f0 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
13a00 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
13a10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13a20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
13a30 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
13a40 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
13a50 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
13a60 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
13a70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13a90 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
13aa0 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
13ab0 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
13ac0 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
13ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13ae0 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
13af0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
13b00 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
13b10 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
13b20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13b30 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
13b40 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
13b50 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
13b60 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
13b70 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
13b80 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
13b90 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
13ba0 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
13bb0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
13bc0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
13bd0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
13be0 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
13bf0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
13c00 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
13c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
13c30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13c40 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
13c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13c60 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
13c70 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
13c80 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
13c90 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
13ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13cb0 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
13cc0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
13cd0 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
13ce0 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
13cf0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
13d20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
13d30 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d50 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
13d60 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d80 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
13d90 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
13da0 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
13db0 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13dd0 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
13de0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
13df0 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
13e00 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
13e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
13e30 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
13e40 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
13e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e60 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
13e70 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
13e80 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
13e90 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13eb0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
13ec0 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
13ed0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
13ee0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13ef0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
13f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
13f30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13f40 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
13f50 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
13f60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
13f70 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
13f80 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
13f90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13fa0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13fb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
13fc0 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
13fd0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
13fe0 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
13ff0 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
14000 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
14010 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
14020 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
14030 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
14040 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
14050 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
14060 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
14070 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
14080 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
14090 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
140a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
140b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
140c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
140d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
140e0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
140f0 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
14100 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
14110 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
14120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14130 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
14140 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
14150 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
14160 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14180 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
14190 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
141a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
141b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
141c0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
141d0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
141e0 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  32.SYSTEM_INFO s
141f0 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20  ystemInfo;....  
14200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14210 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
14220 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
14230 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
14240 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
14250 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
14260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14270 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
14280 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
14290 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
142a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
142b0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
142c0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
142d0 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66  n32.GetSystemInf
142e0 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
142f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14300 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
14310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14320 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
14330 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
14340 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
14350 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
14360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14370 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
14380 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
14390 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
143a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143b0 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77      systemInfo.w
143c0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
143d0 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
143e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
143f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14400 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
14410 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
14430 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
14440 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
14460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14470 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
14480 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
14490 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54  empty string.  T
144a0 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74  his will prevent
144b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
144c0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c  //       the cal
144d0 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d  ling method from
144e0 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69   considering thi
144f0 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d  s method call a.
14500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14510 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65  /       "failure
14520 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "...            
14530 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14540 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
14550 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69  hitecture = Stri
14560 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
14570 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
14580 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
145e0 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
145f0 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
14600 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
14610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
14660 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14670 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74       /// Given t
14680 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
14690 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72  hitecture, retur
146a0 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
146b0 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  he platform...  
146c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
146d0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
146e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
146f0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
14700 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
14710 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
14720 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74  itecture to be t
14730 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70  ranslated to a p
14740 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
14750 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14760 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
14770 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
14780 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  / The platform n
14790 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  ame for the spec
147a0 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
147b0 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52  architecture -OR
147c0 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  - null..      //
147d0 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  / if it cannot b
147e0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
147f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
14800 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
14810 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
14820 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
14830 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
14840 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
14850 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20  hitecture /* in 
14860 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
14870 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
14880 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
14890 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
148a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
148b0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
148c0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
148d0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
148e0 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
148f0 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
14900 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
14910 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
14920 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
14930 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
14940 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
14950 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
14960 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
14970 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14980 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
14990 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
149a0 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
149b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149c0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
149d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
149e0 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
149f0 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
14a00 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
14a10 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
14a20 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56  latforms.TryGetV
14a30 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
14a50 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
14a60 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d  re, out platform
14a70 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
14a80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14a90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14aa0 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  n platformName;.
14ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
14ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
14ad0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
14ae0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
14af0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b40 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
14b50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14b60 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
14b70 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
14b80 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62  SQLite library b
14b90 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ased on the spec
14ba0 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
14bb0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70   directory and p
14bc0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
14bd0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
14be0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14bf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
14c00 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
14c10 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
14c20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
14c30 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20  ry to use, null 
14c40 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
14c50 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
14c60 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  of..      /// th
14c70 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
14c80 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20  ation domain).  
14c90 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73  This directory s
14ca0 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68  hould contain th
14cb0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
14cc0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
14cd0 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62  ure specific sub
14ce0 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20  -directories... 
14cf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14d00 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
14d10 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
14d20 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
14d30 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
14d40 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65   requested proce
14d50 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14d60 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
14d70 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20  ult (the..      
14d80 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
14d90 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
14da0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
14db0 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72  s).  This caller
14dc0 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
14dd0 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73  // almost always
14de0 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f   specify null fo
14df0 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  r this parameter
14e00 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
14e10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
14e20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
14e30 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
14e40 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
14e50 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61  The candidate na
14e60 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
14e70 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69   name to load wi
14e80 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72  ll be stored her
14e90 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  e,..      /// if
14ea0 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
14eb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
14ec0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
14ed0 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f  m name="nativeMo
14ee0 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20  duleHandle">..  
14ef0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
14f00 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
14f10 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
14f20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c  LoadLibrary will
14f30 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20   be stored..    
14f40 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e    /// here, if n
14f50 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20  ecessary.  This 
14f60 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e  value will be In
14f70 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65  tPtr.Zero if the
14f80 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20   call to..      
14f90 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20  /// LoadLibrary 
14fa0 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  fails...      //
14fb0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
14fc0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
14fd0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
14fe0 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
14ff0 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61  e module was loa
15000 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ded successfully
15010 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
15020 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
15030 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
15040 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
15050 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  te static bool P
15060 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
15070 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
15080 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
15090 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
150a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
150b0 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
150c0 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20  rArchitecture,  
150d0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
150e0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
150f0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
15100 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  eName, /* out */
15110 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
15120 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64  IntPtr nativeMod
15130 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20  uleHandle    /* 
15140 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
15150 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
15160 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
15170 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
15180 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
15190 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
151a0 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
151b0 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20  default..       
151c0 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65     //       (i.e
151d0 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74  . attempt to aut
151e0 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63  omatically detec
151f0 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20  t it)...        
15200 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
15210 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
15220 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
15230 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
15240 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
15250 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
15260 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
15270 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
15280 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
15290 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
152a0 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
152b0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
152c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
152d0 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
152e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
152f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15300 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
15310 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
15320 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72    // NOTE: Deter
15330 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69  mine the base fi
15340 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
15350 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
15360 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
15370 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68    //       If th
15380 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20  is is not known 
15390 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77  by this class, w
153a0 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
153b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
153c0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
153d0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
153e0 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  = GetNativeLibra
153f0 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
15400 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
15410 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
15420 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
15430 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
15440 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
15450 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15460 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
15470 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
15480 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
15490 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
154a0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
154b0 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
154c0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
154d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
154e0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
154f0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
15500 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
15510 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63  nePath(baseDirec
15520 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
15530 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c       fileNameOnl
15540 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
15550 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
15560 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
15570 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15580 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
15590 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
155a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
155b0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
155c0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
155d0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
155e0 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
155f0 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
15600 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
15610 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
15620 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
15630 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
15640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
15650 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
15660 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
15670 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
15680 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
15690 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
156a0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
156b0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
156c0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
156d0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
156e0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
156f0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
15700 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
15710 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
15720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15730 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
15740 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15750 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
15760 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
15770 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
15780 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
15790 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
157a0 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
157b0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
157c0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
157d0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
157e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
157f0 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
15800 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
15810 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
15820 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
15830 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
15840 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
15850 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
15860 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
15870 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
15880 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15890 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
158a0 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
158b0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
158c0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
158d0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
158e0 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
158f0 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
15900 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
15910 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
15920 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15930 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
15940 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
15950 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
15960 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15980 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
15990 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
159a0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
159b0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
159c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
159d0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
159e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
159f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
15a00 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
15a10 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
15a20 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
15a30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
15a40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15a50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15a60 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
15a70 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
15a80 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
15a90 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
15aa0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
15ab0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
15ac0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
15ad0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
15ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15af0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
15b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15b10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
15b20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
15b30 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
15b40 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
15b50 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
15b60 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
15b70 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
15b80 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
15b90 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
15ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
15bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
15bc0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
15bd0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
15be0 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
15bf0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
15c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c10 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
15c20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
15c30 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
15c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15c50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
15c60 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
15c70 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
15c80 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
15c90 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
15ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15cc0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
15cd0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
15ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15cf0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
15d00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15d10 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
15d20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
15d30 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
15d40 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
15d50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
15d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15d80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
15d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
15da0 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79  TE: Show exactly
15db0 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72   where we are tr
15dc0 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65  ying to load the
15dd0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
15de0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15df0 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
15e00 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  ry from...      
15e10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e30 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
15e40 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
15e50 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
15e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e70 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
15e80 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
15e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15ea0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
15eb0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
15ec0 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  er is trying to 
15ed0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
15ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ef0 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
15f00 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e  ibrary \"{0}\"..
15f10 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20  .", fileName)); 
15f20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
15f30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
15f40 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
15f50 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
15f60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15f70 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
15f80 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
15f90 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
15fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
15fb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
15fc0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
15fd0 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
15fe0 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
15ff0 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
16000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16010 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
16020 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
16030 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
16040 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
16050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16060 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
16070 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20  w an exception. 
16080 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74   This must use t
16090 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
160a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
160b0 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20         P/Invoke 
160c0 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63  method for the c
160d0 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67  urrent operating
160e0 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20   system...      
160f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16100 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
16110 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
16120 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
16130 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
16140 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e  ModuleHandle = N
16150 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
16160 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  er.LoadLibrary(f
16170 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
16180 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16190 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
161a0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
161b0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
161c0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
161d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
161e0 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
161f0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
16200 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
16210 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
16220 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
16230 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
16240 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
16250 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
16260 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
16270 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
16280 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
162a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
162b0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
162c0 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
162d0 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
162e0 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
162f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16310 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
16320 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
16330 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
16340 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
16350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16370 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
16380 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
16390 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
163a0 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
163b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
163c0 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
163d0 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
163e0 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
163f0 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
16400 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
16410 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
16420 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
16430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16440 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16450 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
16460 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
16470 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
16480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16490 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
164a0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
164b0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
164c0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
164d0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
164e0 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
164f0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
16500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16510 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
16520 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
16530 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
16540 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
16550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16560 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
16570 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
16580 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
16590 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
165a0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
165b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
165c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165d0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
165e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
165f0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
16600 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16610 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
16620 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
16630 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
16640 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
16650 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
166a0 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
166b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
166c0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
166d0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
166e0 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
166f0 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
16700 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
16710 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
16720 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
16730 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
16740 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
16750 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
16760 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
16770 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
16780 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
16790 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
167a0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
167b0 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
167c0 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
167d0 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
167e0 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
167f0 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
16800 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
16810 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
16820 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
16830 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
16840 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
16850 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
16860 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
16870 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
16880 65 2e 49 6e 74 65 72 6f 70 2e 31 30 36 2e 64 6c  e.Interop.106.dl
16890 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
168a0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
168b0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
168c0 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
168d0 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
168e0 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
168f0 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
16900 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
16910 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
16920 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
16930 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
16940 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
16950 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
16960 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
16970 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
16980 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
16990 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
169a0 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
169b0 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
169c0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
169d0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
169e0 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
169f0 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
16a00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
16a10 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
16a20 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
16a30 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
16a40 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
16a50 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
16a60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
16a70 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
16a80 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
16a90 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
16aa0 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
16ab0 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
16ac0 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
16ad0 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
16ae0 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
16af0 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
16b00 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
16b10 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
16b20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
16b30 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
16b40 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
16b50 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
16b60 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
16b70 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
16b80 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
16b90 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
16ba0 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
16bb0 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
16bc0 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
16bd0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
16be0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
16bf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16c00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16c10 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
16c20 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
16c30 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
16c40 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
16c50 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
16c60 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
16c70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16c80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
16c90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16ca0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
16cb0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
16cc0 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
16cd0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
16ce0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
16cf0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
16d00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16d10 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
16d20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16d30 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16d40 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
16d50 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
16d60 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
16d70 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
16d80 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
16d90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16da0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
16db0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16dc0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
16dd0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
16de0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
16df0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16e00 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
16e10 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
16e20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16e30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16e40 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
16e50 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
16e60 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
16e70 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
16e80 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
16e90 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
16ea0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16eb0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
16ec0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16ed0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
16ee0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
16ef0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
16f00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
16f10 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
16f20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16f30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
16f40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16f50 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16f60 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
16f70 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
16f80 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
16f90 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
16fa0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
16fb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16fc0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
16fd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
16fe0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
16ff0 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
17000 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
17010 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
17020 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
17030 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17040 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
17050 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17060 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
17070 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
17080 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
17090 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
170a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
170b0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
170c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
170d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
170e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
170f0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
17100 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
17110 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
17120 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17130 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
17140 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
17150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17160 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
17170 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17180 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17190 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
171a0 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
171b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
171c0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
171d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
171e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
171f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17200 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17210 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
17220 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
17230 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17240 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
17250 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
17260 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17270 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
17280 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17290 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
172a0 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
172b0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
172c0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
172d0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
172e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
172f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
17300 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17310 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
17320 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
17330 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
17340 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
17350 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17360 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
17370 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17380 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17390 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
173a0 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
173b0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
173c0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
173d0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
173e0 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
173f0 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
17400 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
17410 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17420 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
17430 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17440 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17450 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17460 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
17470 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
17480 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
17490 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
174a0 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
174b0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
174c0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
174d0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
174e0 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
174f0 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
17500 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
17510 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
17520 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
17530 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
17540 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17550 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
17560 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17570 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17580 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
17590 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
175a0 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
175b0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
175c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
175d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
175e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
175f0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
17600 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
17610 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
17620 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
17630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17640 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
17650 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17660 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
17670 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
17680 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
17690 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
176a0 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
176b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
176c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
176d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
176e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
176f0 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
17700 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
17710 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
17720 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
17730 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
17740 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
17750 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
17760 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
17770 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
17780 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
17790 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
177a0 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
177b0 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
177c0 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
177d0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
177e0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
177f0 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
17800 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
17810 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
17820 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
17830 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17840 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17850 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17860 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
17870 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
17880 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17890 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
178a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
178b0 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
178c0 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
178d0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
178e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
178f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17900 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
17910 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
17920 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
17930 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
17940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17950 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
17960 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17970 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
17980 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
17990 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
179a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
179b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
179c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
179d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
179e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
179f0 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
17a00 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
17a10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17a20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
17a30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17a40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
17a50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
17a60 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
17a70 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
17a80 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
17a90 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
17aa0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
17ab0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
17ac0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
17ad0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
17ae0 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
17af0 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
17b00 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
17b10 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
17b20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17b30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17b40 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17b50 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17b60 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
17b70 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
17b80 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
17b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17ba0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17bb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17bc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
17bd0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
17be0 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
17bf0 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
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 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17c40 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
17c50 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  lob_close_intero
17c60 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  p(IntPtr blob);.
17c70 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
17c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17c90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17ca0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
17cb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
17cc0 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
17cd0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
17ce0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
17cf0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
17d00 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
17d10 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
17d20 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
17d30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17d40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
17d50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17d60 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17d70 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17d80 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
17d90 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
17da0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
17db0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
17dc0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
17dd0 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
17de0 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
17df0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17e00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
17e10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17e20 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17e30 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17e40 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
17e50 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
17e60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17e70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
17e80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17e90 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
17ea0 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
17eb0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
17ec0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
17ed0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
17ee0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
17ef0 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
17f00 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
17f10 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
17f20 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
17f30 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
17f40 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
17f50 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
17f60 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
17f70 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
17f80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17f90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17fa0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17fb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17fc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17fd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17fe0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17ff0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18000 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18010 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18020 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18030 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18040 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
18050 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
18060 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
18070 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
18080 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18090 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
180a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
180b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
180c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
180d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
180e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
180f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18100 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18110 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18120 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
18130 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
18140 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
18150 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
18160 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
18170 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18180 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18190 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
181a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
181b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
181c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
181d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
181e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
181f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18210 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18220 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18230 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
18240 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
18250 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
18260 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
18270 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
18280 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
18290 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
182a0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
182b0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
182c0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
182d0 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
182e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
182f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18300 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18310 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18320 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18340 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18350 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18360 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18370 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18380 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
18390 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
183a0 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
183b0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
183c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
183d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
183e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
183f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18400 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18410 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18420 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18430 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18440 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18450 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18460 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18470 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18480 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
18490 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
184a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
184b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
184c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
184d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
184e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
184f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18500 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18510 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18520 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18530 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18540 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18550 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
18560 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
18570 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
18580 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18590 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
185a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
185b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
185c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
185d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
185e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
185f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18600 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18610 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18620 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18630 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18640 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
18650 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
18660 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
18670 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18680 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18690 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
186a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
186b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
186c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
186d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
186e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
186f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18700 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18710 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18720 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18730 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
18740 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
18750 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18760 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18770 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18780 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
187a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
187b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
187c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
187d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
187e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
187f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18800 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18810 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
18820 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
18830 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
18840 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
18850 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
18860 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18870 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18880 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18890 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
188a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
188b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
188c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
188d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
188e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
188f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18900 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18910 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
18920 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
18930 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
18940 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18960 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18970 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18990 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
189a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
189b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
189c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
189d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
189e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
189f0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18a00 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
18a10 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
18a20 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
18a30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18a40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18a50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18a60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18a70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18a80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18a90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18aa0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18ab0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18ac0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18ad0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18ae0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18af0 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
18b00 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
18b10 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
18b20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18b30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18b40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18b50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18b60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18b70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18b80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18b90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18ba0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18bb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18bc0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18bd0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
18be0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
18bf0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
18c00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18c10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18c20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18c30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18c40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18c50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18c60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18c70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18c80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18c90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18ca0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18cb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18cc0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
18cd0 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
18ce0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
18cf0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18d00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18d10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18d20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18d30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18d40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18d50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18d60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18d70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18d80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18d90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18da0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
18db0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
18dc0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
18dd0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
18de0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18df0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18e00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18e10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18e20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18e30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18e40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18e50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18e60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18e70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18e80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18e90 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18ea0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
18eb0 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
18ec0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
18ed0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18ee0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18ef0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18f00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18f10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18f20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18f30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18f40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18f50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18f60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18f70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18f80 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18f90 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
18fa0 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
18fb0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
18fc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18fd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18fe0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18ff0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19000 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19010 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19020 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19030 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19040 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19050 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19060 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19070 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
19080 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
19090 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
190a0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
190b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
190c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
190d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
190e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
190f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
19100 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19110 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
19120 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19130 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
19140 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19150 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
19160 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
19170 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
19180 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
19190 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
191a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
191b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
191c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
191d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
191e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
191f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19200 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19210 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19220 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19230 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19240 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
19250 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
19260 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
19270 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19280 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
192a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
192b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
192c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
192d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
192e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
192f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
19300 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19310 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
19320 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
19330 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
19340 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
19350 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
19360 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
19370 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
19380 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
19390 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
193a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
193b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
193c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
193d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
193e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
193f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19400 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19410 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19420 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19430 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19440 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19450 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19460 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
19470 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
19480 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
19490 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
194a0 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
194b0 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
194c0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
194d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
194e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
194f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19500 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19510 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19520 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19530 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19540 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19550 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19560 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19570 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
19580 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19590 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
195a0 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
195b0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
195c0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
195d0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
195e0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
195f0 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
19600 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
19610 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
19620 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
19630 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
19640 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
19650 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19660 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19670 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19680 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19690 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
196a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
196b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
196c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
196d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
196e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
196f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19700 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
19710 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
19720 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19730 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19740 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19760 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19770 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19780 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19790 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
197a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
197b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
197c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
197d0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
197e0 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
197f0 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
19800 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
19810 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
19820 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
19830 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
19840 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
19850 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
19860 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
19870 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
19880 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
19890 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
198a0 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
198b0 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
198c0 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
198d0 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
198e0 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
198f0 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
19900 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
19910 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
19920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19930 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19950 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
19960 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
19970 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
19980 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
19990 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
199a0 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
199b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
199c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
199d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
199e0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
199f0 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
19a00 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
19a10 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
19a20 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
19a30 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
19a40 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
19a50 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
19a60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19a70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19a80 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
19a90 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
19aa0 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
19ab0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
19ac0 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
19ad0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
19ae0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19af0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19b00 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19b10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19b20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19b30 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
19b40 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
19b50 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
19b60 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
19b70 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
19b80 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
19b90 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
19ba0 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
19bb0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
19bc0 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
19bd0 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
19be0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19bf0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19c00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19c10 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
19c20 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f  e3_table_cursor_
19c30 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
19c40 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74  tmt, int db, int
19c50 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b   tableRootPage);
19c60 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  ....#endif..// !
19c70 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
19c80 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
19c90 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e  n....    // Stan
19ca0 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67  dard API calls g
19cb0 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72  lobal across ver
19cc0 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72  sions.  There ar
19cd0 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65  e a few instance
19ce0 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c  s of interop cal
19cf0 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74  ls..    // scatt
19d00 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75  ered in here, bu
19d10 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20  t they are only 
19d20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54  active when PLAT
19d30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19d40 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65  EWORK is declare
19d50 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  d...    #region 
19d60 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20  standard sqlite 
19d70 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  api calls....#if
19d80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19d90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19da0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19db0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19dc0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19dd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19de0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19df0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19e00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19e10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19e20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
19e30 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62  tPtr sqlite3_lib
19e40 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69  version();....#i
19e50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19e60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19e70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19e80 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19e90 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19ea0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19eb0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19ec0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19ed0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19ee0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19ef0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
19f00 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  nt sqlite3_libve
19f10 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d  rsion_number();.
19f20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19f30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19f40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19f50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19f70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19f80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19f90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19fa0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19fb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19fc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19fd0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
19fe0 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
19ff0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a000 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a020 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a030 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a050 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a060 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a070 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a080 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a090 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a0a0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1a0b0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
1a0c0 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
1a0d0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1a0e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a0f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a110 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a120 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a130 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a140 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1a150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a160 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a170 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a180 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1a190 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
1a1a0 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
1a1b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a1c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a1d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a1e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a1f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a200 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a210 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a220 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a230 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a240 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a250 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a260 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a270 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
1a280 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
1a290 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65  (..        int e
1a2a0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
1a2b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a2c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a2d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a2e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a2f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a300 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a310 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a320 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a330 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a340 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a350 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a360 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a370 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
1a380 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
1a390 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
1a3a0 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
1a3b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a3c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a3d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a3e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a3f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a400 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a410 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a430 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a440 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a460 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a470 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
1a480 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
1a490 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
1a4a0 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
1a4b0 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
1a4c0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
1a4d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a4e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a4f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a500 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a510 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a520 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a530 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a540 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a560 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a570 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a580 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1a590 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
1a5a0 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
1a5b0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1a5c0 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
1a5d0 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
1a5e0 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
1a5f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a600 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a610 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a630 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a640 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1a650 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1a660 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1a670 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a680 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1a690 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1a6a0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1a6b0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1a6c0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
1a6d0 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
1a6e0 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
1a6f0 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
1a700 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
1a710 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
1a720 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
1a730 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
1a740 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a750 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a760 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
1a770 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
1a780 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
1a790 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
1a7a0 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
1a7b0 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
1a7c0 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
1a7d0 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
1a7e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a7f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a800 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a810 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a820 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a830 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a840 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a850 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a860 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a870 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
1a880 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
1a890 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
1a8a0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1a8b0 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
1a8c0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
1a8d0 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
1a8e0 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
1a8f0 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
1a900 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
1a910 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
1a920 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
1a930 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
1a940 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1a950 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
1a960 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
1a970 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
1a980 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
1a990 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
1a9a0 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
1a9b0 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
1a9c0 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
1a9d0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
1a9e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a9f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1aa00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1aa10 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
1aa20 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
1aa30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1aa40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1aa50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1aa60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1aa70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1aa80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1aa90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1aaa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1aab0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1aac0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
1aad0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
1aae0 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
1aaf0 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
1ab00 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
1ab10 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
1ab20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
1ab30 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
1ab40 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
1ab50 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
1ab60 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
1ab70 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
1ab80 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
1ab90 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
1aba0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
1abb0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
1abc0 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
1abd0 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
1abe0 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
1abf0 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
1ac00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
1ac10 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
1ac20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
1ac30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ac40 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ac50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1ac60 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
1ac70 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
1ac80 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
1ac90 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#i
1aca0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1acb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1acc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1acd0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ace0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1acf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ad00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ad10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ad20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ad30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ad40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1ad50 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
1ad60 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
1ad70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ad80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ad90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ada0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1adb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1adc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1add0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ade0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1adf0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ae00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ae10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ae20 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1ae30 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
1ae40 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
1ae50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ae60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ae70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ae80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ae90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1aea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1aeb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1aec0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1aed0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1aee0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1aef0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1af00 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
1af10 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
1af20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1af30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1af40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1af50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1af60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1af70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1af80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1af90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1afa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1afb0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1afc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1afd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1afe0 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
1aff0 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1b000 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
1b010 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
1b020 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79  gsEnum flags, by
1b030 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a  te[] vfsName);..
1b040 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b050 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b060 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b070 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b080 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b090 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b0a0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
1b0b0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1b0c0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
1b0d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b0e0 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1b0f0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1b100 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
1b110 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1b120 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1b130 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1b140 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66  _open16(string f
1b150 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ileName, ref Int
1b160 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
1b170 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b180 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b190 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b1a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b1b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b1c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b1d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b1e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b1f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b200 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b210 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1b220 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
1b230 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  upt(IntPtr db);.
1b240 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b250 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b260 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b270 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b280 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b290 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b2a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1b2b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b2c0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
1b2d0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
1b2e0 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62  _rowid(IntPtr db
1b2f0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
1b300 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b310 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b320 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b330 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b340 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b350 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b360 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1b370 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b380 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1b390 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1b3a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1b3b0 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
1b3c0 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
1b3d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b3e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b3f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b400 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b410 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b420 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b430 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1b440 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b450 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
1b460 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
1b470 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
1b480 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b490 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b4a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b4b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1b4c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1b4d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b4e0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
1b4f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b500 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
1b510 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
1b520 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
1b530 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1b540 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b550 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b560 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b570 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b580 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b5a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b5b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b5c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b5d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b5e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1b5f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1b600 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b  ite3_shutdown();
1b610 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b620 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b630 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1b640 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1b650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b660 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1b670 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b680 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1b690 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1b6a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1b6b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1b6c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1b6d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73  Code sqlite3_bus
1b6e0 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
1b6f0 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
1b700 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b710 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b720 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b730 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b740 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b750 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b760 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b770 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b780 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b790 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b7a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b7b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1b7c0 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  e sqlite3_clear_
1b7d0 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20  bindings(IntPtr 
1b7e0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1b7f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b800 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b810 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b820 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b830 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b840 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b850 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b860 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b870 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b880 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b890 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1b8a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1b8b0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
1b8c0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1b8d0 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
1b8e0 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
1b8f0 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
1b900 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b910 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b920 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b930 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b940 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b950 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b960 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
1b970 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b980 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1b990 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1b9a0 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
1b9b0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1b9c0 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
1b9d0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
1b9e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b9f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ba00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ba10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ba20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ba30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ba40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ba50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ba60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ba70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ba80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ba90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1baa0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
1bab0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
1bac0 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
1bad0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
1bae0 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
1baf0 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
1bb00 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
1bb10 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
1bb20 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
1bb30 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
1bb40 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
1bb50 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
1bb60 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
1bb70 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
1bb80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1bb90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1bba0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bbb0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
1bbc0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
1bbd0 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
1bbe0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1bbf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1bc00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1bc10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bc20 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1bc30 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1bc40 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
1bc50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1bc60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bc70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1bc80 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
1bc90 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
1bca0 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
1bcb0 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
1bcc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bcd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bce0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bcf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bd00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bd10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bd20 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1bd30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1bd40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1bd50 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
1bd60 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
1bd70 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
1bd80 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
1bd90 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1bda0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
1bdb0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
1bdc0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
1bdd0 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
1bde0 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
1bdf0 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
1be00 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
1be10 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
1be20 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
1be30 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
1be40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1be50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1be60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1be70 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
1be80 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
1be90 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
1bea0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1beb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bec0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1bed0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1bee0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1bef0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
1bf00 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
1bf10 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1bf20 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
1bf30 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1bf40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bf50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1bf60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bf70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1bf80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1bf90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bfa0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1bfb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1bfc0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1bfd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1bfe0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1bff0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c000 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
1c010 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c020 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1c030 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c040 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c050 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c060 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c070 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c080 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c090 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c0a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c0b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c0c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c0d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c0e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c0f0 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
1c100 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c110 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
1c120 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
1c130 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1c140 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c160 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c190 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c1a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c1b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c1c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c1d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c1e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c1f0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1c200 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
1c210 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
1c220 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c230 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c240 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c250 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c260 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c270 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c280 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c290 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c2a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c2b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c2c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c2d0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1c2e0 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
1c2f0 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
1c300 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
1c310 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
1c320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c350 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c360 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c370 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c380 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c390 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c3a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c3b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c3c0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1c3d0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
1c3e0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
1c3f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c400 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c410 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c420 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c430 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c440 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c450 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c460 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c470 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c480 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1c490 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c4a0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1c4b0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
1c4c0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
1c4d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c4e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c4f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c500 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c510 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c520 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c530 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c540 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c550 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c560 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c570 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c580 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1c590 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
1c5a0 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
1c5b0 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#if 
1c5c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c5d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c5e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c5f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c600 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c610 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c620 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1c630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c640 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
1c650 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(In
1c660 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1c670 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
1c680 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c690 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c6a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c6b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c6c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c6d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c6e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c6f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c700 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c710 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c720 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c730 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1c740 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
1c750 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1c760 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c770 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c780 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c790 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c7a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c7b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c7c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c7d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c7e0 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
1c7f0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
1c800 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
1c810 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
1c820 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1c830 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c840 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c850 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c860 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c870 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c880 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c890 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c8a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c8b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c8c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c8d0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c8e0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1c8f0 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
1c900 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1c910 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c920 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c930 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c940 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c950 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c970 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c980 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c990 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c9a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c9b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c9c0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1c9d0 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
1c9e0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c9f0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1ca00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ca10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ca20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ca30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ca40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ca50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ca60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ca70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ca80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ca90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1caa0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1cab0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
1cac0 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1cad0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1cae0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1caf0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1cb00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cb10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1cb20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1cb30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1cb40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1cb50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cb60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1cb70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cb80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1cb90 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
1cba0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
1cbb0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cbc0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1cbd0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1cbe0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1cbf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1cc00 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1cc10 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1cc20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1cc30 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1cc40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cc50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1cc60 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1cc70 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cc80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1cc90 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
1cca0 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
1ccb0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1ccc0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1ccd0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1cce0 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
1ccf0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1cd00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cd10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cd20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cd30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cd40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1cd50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cd60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1cd70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cd80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cd90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cda0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1cdb0 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
1cdc0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1cdd0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1cde0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1cdf0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ce00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ce10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ce20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ce30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ce40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ce50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ce60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ce70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ce80 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1ce90 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
1cea0 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
1ceb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1cec0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ced0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cee0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1cef0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1cf00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cf10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1cf20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cf30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1cf40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cf50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cf60 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
1cf70 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
1cf80 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1cf90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1cfa0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1cfb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cfc0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1cfd0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1cfe0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1cff0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d000 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d010 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d020 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d030 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1d040 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
1d050 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
1d060 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d070 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d080 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d090 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d0a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d0b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d0c0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1d0d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d0e0 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
1d0f0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
1d100 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
1d110 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1d120 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d130 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d140 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d150 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d160 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d170 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d180 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d190 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d1a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d1b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d1c0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1d1d0 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
1d1e0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
1d1f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d200 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d210 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d220 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d230 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d240 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d250 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1d260 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d270 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
1d280 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
1d290 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
1d2a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d2b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d2c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d2d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d2e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d2f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d300 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d310 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d320 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d330 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d340 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d350 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
1d360 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
1d370 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1d380 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d390 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d3a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d3b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d3c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d3d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d3e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d3f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d400 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1d410 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d420 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d430 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1d440 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
1d450 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
1d460 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
1d470 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1d480 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1d490 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d4a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d4b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d4c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1d4d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1d4e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1d4f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d500 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1d510 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1d520 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
1d530 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
1d540 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
1d550 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d560 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d570 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d580 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d590 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d5a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d5b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d5c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d5d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d5e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d5f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d600 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1d610 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
1d620 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
1d630 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
1d640 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
1d650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d6a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d6b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d6c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d6d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1d6e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d6f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1d700 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1d710 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
1d720 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
1d730 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
1d740 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1d750 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d760 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d770 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d780 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d790 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d7a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d7b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d7c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d7d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d7e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d7f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1d800 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1d810 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
1d820 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
1d830 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d860 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d870 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d890 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d8a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d8b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d8c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d8d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1d8e0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1d8f0 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
1d900 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
1d910 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d920 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d930 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d940 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d950 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d970 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d980 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d990 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d9a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d9b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d9c0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1d9d0 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
1d9e0 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
1d9f0 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
1da00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1da10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1da20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1da30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1da40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1da50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1da60 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1da70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1da80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1da90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1daa0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1dab0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1dac0 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
1dad0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
1dae0 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
1daf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1db00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1db10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1db20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1db30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1db40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1db50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1db60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1db70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1db80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1db90 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1dba0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
1dbb0 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
1dbc0 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
1dbd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1dbe0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1dbf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1dc00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1dc10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1dc20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dc30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1dc40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1dc50 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1dc60 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
1dc70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1dc80 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
1dc90 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1dca0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1dcb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1dcc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1dcd0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1dce0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1dcf0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1dd00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1dd10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1dd20 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1dd30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1dd40 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1dd50 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
1dd60 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
1dd70 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1dd80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dd90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1dda0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ddb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ddc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ddd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dde0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ddf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1de00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1de10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1de20 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1de30 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
1de40 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1de50 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
1de60 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
1de70 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1de80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1de90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dea0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1deb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1dec0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ded0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dee0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1def0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1df00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1df10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1df20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1df30 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1df40 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
1df50 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
1df60 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
1df70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1df90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1dfa0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1dfb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1dfc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dfd0 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
1dfe0 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
1dff0 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
1e000 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e010 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
1e020 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
1e030 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
1e040 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e050 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1e060 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1e070 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
1e080 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1e090 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
1e0a0 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
1e0b0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
1e0c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e0d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e0e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e0f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e100 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e110 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e120 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1e130 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1e140 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1e150 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e160 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1e170 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1e180 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1e190 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e1a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1e1b0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1e1c0 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
1e1d0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1e1e0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
1e1f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e200 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e210 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e220 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e240 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e250 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1e260 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1e270 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1e280 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e290 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1e2a0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1e2b0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1e2c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e2d0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1e2e0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1e2f0 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
1e300 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
1e310 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
1e320 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
1e330 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
1e340 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
1e350 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
1e360 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e370 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e390 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e3a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e3b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e3c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e3d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e3e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e3f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e400 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e410 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1e420 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
1e430 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1e440 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
1e450 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1e460 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e470 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e490 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e4a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e4b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e4c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e4d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e4e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e4f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e500 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1e510 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
1e520 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
1e530 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
1e540 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
1e550 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
1e560 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
1e570 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e580 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e590 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e5a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e5b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e5c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e5d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e5e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e5f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e600 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e610 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e620 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
1e630 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
1e640 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e650 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e660 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e670 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e680 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e690 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e6a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e6b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e6c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e6d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e6e0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1e6f0 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
1e700 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
1e710 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1e720 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e730 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e750 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e760 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e770 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e780 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e790 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e7a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e7b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e7c0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1e7d0 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
1e7e0 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
1e7f0 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
1e800 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
1e810 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
1e820 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
1e830 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e840 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e850 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e860 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e870 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e880 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e890 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e8a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e8b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e8c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e8d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1e8e0 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
1e8f0 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
1e900 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
1e910 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
1e920 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
1e930 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1e940 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e950 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e960 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e970 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e980 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e990 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e9a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e9b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e9c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e9d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e9e0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1e9f0 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
1ea00 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
1ea10 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
1ea20 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
1ea30 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
1ea40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ea50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ea60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ea70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ea80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ea90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1eaa0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1eab0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1eac0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ead0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1eae0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1eaf0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
1eb00 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
1eb10 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
1eb20 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
1eb30 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
1eb40 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1eb50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eb60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1eb70 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1eb80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1eb90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eba0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ebb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ebc0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ebd0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ebe0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ebf0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1ec00 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
1ec10 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
1ec20 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1ec30 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
1ec40 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
1ec50 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
1ec60 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
1ec70 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
1ec80 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
1ec90 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
1eca0 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
1ecb0 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
1ecc0 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
1ecd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ece0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ecf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ed00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1ed10 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1ed20 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
1ed30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ed40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ed50 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ed60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ed70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1ed80 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1ed90 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
1eda0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1edb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1edc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1edd0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1ede0 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
1edf0 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
1ee00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1ee10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ee20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ee30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1ee40 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1ee50 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
1ee60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ee70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ee80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ee90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1eea0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
1eeb0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
1eec0 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
1eed0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1eee0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1eef0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ef00 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
1ef10 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
1ef20 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
1ef30 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
1ef40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ef50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ef60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ef70 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1ef80 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1ef90 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
1efa0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1efb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1efc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1efd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1efe0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1eff0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
1f000 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
1f010 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f020 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1f030 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1f040 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
1f050 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
1f060 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
1f070 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
1f080 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
1f090 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f0a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f0b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f0c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1f0d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1f0e0 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
1f0f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f100 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f110 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
1f140 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
1f150 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
1f160 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f170 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f180 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1f190 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
1f1a0 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74  onfig_int_refint
1f1b0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
1f1c0 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
1f1d0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c  m op, int value,
1f1e0 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29   ref int result)
1f1f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f200 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f210 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f220 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f240 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f250 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f260 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f280 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f290 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f2a0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1f2b0 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f  ite3_rollback_ho
1f2c0 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ok(IntPtr db, SQ
1f2d0 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c  LiteRollbackCall
1f2e0 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
1f2f0 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
1f300 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f310 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f320 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f330 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f340 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f350 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f360 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f370 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f380 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f390 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f3a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1f3b0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
1f3c0 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73  _handle(IntPtr s
1f3d0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1f3e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f3f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f400 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f410 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f420 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f430 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f440 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f450 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f460 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f470 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f480 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f490 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f4a0 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  3_db_release_mem
1f4b0 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ory(IntPtr db);.
1f4c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f4d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f4e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f4f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f500 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f510 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f520 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f530 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f550 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f560 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f570 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1f580 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49  e3_db_filename(I
1f590 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1f5a0 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
1f5b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f5c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f5d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f5e0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f5f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f600 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f610 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f620 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f630 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f640 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f650 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f660 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61  t sqlite3_db_rea
1f670 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c  donly(IntPtr db,
1f680 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
1f690 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f6a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f6b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f6c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
1f6d0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
1f6e0 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
1f6f0 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1f700 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1f710 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f720 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f730 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f740 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1f750 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1f760 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66  ename")]..#endif
1f770 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f780 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1f790 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
1f7a0 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e  ilename_bytes(In
1f7b0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1f7c0 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
1f7d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f7e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f7f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f800 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1f810 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1f820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1f830 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1f840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f850 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1f860 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f870 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1f880 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
1f890 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
1f8a0 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
1f8b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f8c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f8d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f8e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f8f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f900 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f910 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f920 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f930 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f940 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f950 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f960 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1f970 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
1f980 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1f990 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
1f9a0 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
1f9b0 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66  Ptr pvParam, ref
1f9c0 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
1f9d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f9e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f9f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1fa00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fa10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fa20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fa30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fa40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1fa50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fa60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1fa70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1fa80 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1fa90 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
1faa0 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
1fab0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fac0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fad0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fae0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1faf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fb00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fb10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fb20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fb30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1fb40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1fb50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fb60 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74   int sqlite3_get
1fb70 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50  _autocommit(IntP
1fb80 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1fb90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fbb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fbc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1fbd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1fbe0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1fbf0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1fc00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1fc10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1fc20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fc30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1fc40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1fc50 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
1fc60 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72  ult_codes(IntPtr
1fc70 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b   db, int onoff);
1fc80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1fc90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1fca0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1fcb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fcc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fcd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fce0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fcf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1fd00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fd10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1fd20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1fd30 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1fd40 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72  Code sqlite3_err
1fd50 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
1fd60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1fd70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1fd80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1fd90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fda0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fdb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fdc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fdd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1fde0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fdf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1fe00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1fe10 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1fe20 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
1fe30 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e  ended_errcode(In
1fe40 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1fe50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1fe60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1fe70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fe80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1fe90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1feb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1fec0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fed0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1fee0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1fef0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ff00 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
1ff10 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43  str(SQLiteErrorC
1ff20 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e  ode rc); /* 3.7.
1ff30 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  15+ */....    //
1ff40 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c   Since sqlite3_l
1ff50 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  og() takes a var
1ff60 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
1ff70 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
1ff80 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
1ff90 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
1ffa0 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
1ffb0 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  alls.  For now, 
1ffc0 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f  we are only expo
1ffd0 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74  sing a single st
1ffe0 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  ring, and..    /
1fff0 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  / depend on the 
20000 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74  caller to format
20010 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69   the string...#i
20020 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20030 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20040 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20050 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20060 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20080 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20090 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
200a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
200b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
200c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
200d0 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  oid sqlite3_log(
200e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
200f0 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d  iErrCode, byte[]
20100 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69   zFormat);....#i
20110 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20120 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20130 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20140 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20150 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20160 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20170 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20180 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20190 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
201a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
201b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
201c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
201d0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
201e0 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rol(IntPtr db, b
201f0 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69  yte[] zDbName, i
20200 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41  nt op, IntPtr pA
20210 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  rg);....#if !PLA
20220 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20230 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20240 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20250 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20260 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20270 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20280 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
20290 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
202a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
202b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
202c0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
202d0 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69  sqlite3_backup_i
202e0 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44  nit(IntPtr destD
202f0 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e  b, byte[] zDestN
20300 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72  ame, IntPtr sour
20310 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f  ceDb, byte[] zSo
20320 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  urceName);....#i
20330 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20340 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20350 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20360 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20370 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20380 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20390 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
203a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
203b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
203c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
203d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
203e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
203f0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74  qlite3_backup_st
20400 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ep(IntPtr backup
20410 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d  , int nPage);...
20420 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20430 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20440 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20450 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20460 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20470 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20480 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20490 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
204a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
204b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
204c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
204d0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
204e0 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
204f0 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
20500 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20510 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20520 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20530 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20540 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20550 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20560 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20570 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20580 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20590 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
205a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
205b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
205c0 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
205d0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
205e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
205f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20600 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20610 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20620 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20630 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20640 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20650 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20670 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20680 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20690 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
206a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
206b0 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c  _close(IntPtr bl
206c0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
206d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
206e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
206f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20700 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20710 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20720 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20730 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
20740 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20750 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
20760 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20770 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
20780 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28  ite3_blob_bytes(
20790 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
207a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
207b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
207c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
207d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
207e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
207f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20800 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20810 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20820 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20830 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20840 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20850 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20860 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f  e sqlite3_blob_o
20870 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  pen(IntPtr db, b
20880 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
20890 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
208a0 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f  te[] colName, lo
208b0 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c  ng rowId, int fl
208c0 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ags, ref IntPtr 
208d0 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  ptrBlob);....#if
208e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
208f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20900 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20910 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20920 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20930 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20940 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20950 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20960 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20970 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20980 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20990 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
209a0 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28  lite3_blob_read(
209b0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
209c0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
209d0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
209e0 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
209f0 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
20a00 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
20a10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20a20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20a30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20a40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20a50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20a60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20a70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20a90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20aa0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20ab0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20ac0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20ad0 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49  e3_blob_reopen(I
20ae0 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67  ntPtr blob, long
20af0 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20   rowId);....#if 
20b00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20b10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20b20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20b30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20b40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20b50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20b60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20b70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20b80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20b90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20ba0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20bb0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
20bc0 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28  ite3_blob_write(
20bd0 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61  IntPtr blob, [Ma
20be0 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
20bf0 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20  dType.LPArray)] 
20c00 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69  byte[] buffer, i
20c10 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66  nt count, int of
20c20 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  fset);....#if !P
20c30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20c40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20c50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20c60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20c70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20c80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20c90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20ca0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20cb0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20cc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20cd0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20ce0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20cf0 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
20d00 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
20d10 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20  r zSQL);....#if 
20d20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20d30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20d40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20d50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20d60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20d70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20d80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20da0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20db0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20dc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20dd0 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  Ptr sqlite3_mpri
20de0 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61  ntf(IntPtr forma
20df0 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a  t, __arglist);..
20e00 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
20e10 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20  ..    // SQLite 
20e20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61  API calls that a
20e30 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22  re provided by "
20e40 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65  well-known" exte
20e50 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20  nsions that may 
20e60 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20  be statically.. 
20e70 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74     // linked wit
20e80 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
20e90 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
20ea0 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
20eb0 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  e...    #region 
20ec0 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65  extension sqlite
20ed0 20 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20   api calls..    
20ee0 23 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c 20  #region virtual 
20ef0 74 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52  table..#if INTER
20f00 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
20f10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20f20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20f30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20f40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20f50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20f60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20f70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20f80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20f90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20fa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20fb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20fc0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20fd0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
20fe0 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ble_module(IntPt
20ff0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
21000 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d  e, ref sqlite3_m
21010 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e  odule module, In
21020 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
21030 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  , xDestroyModule
21040 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23   xDestroy);....#
21050 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21060 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21080 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21090 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
210a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
210b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
210c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
210d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
210e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
210f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21100 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73  void sqlite3_dis
21110 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  pose_module(IntP
21120 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65  tr pModule);..#e
21130 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
21140 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
21150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21190 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
211a0 72 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65  region session e
211b0 78 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e  xtension..#if IN
211c0 54 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58  TEROP_SESSION_EX
211d0 54 45 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50 4c  TENSION..#if !PL
211e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
211f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
21200 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
21210 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
21220 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21230 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21240 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
21250 69 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c 74  int xSessionFilt
21260 65 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  er(IntPtr contex
21270 74 2c 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61  t, IntPtr pTblNa
21280 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
21290 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
212a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
212b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
212c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
212d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
212e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
212f0 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53  ernal delegate S
21300 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f  QLiteChangeSetCo
21310 6e 66 6c 69 63 74 52 65 73 75 6c 74 20 78 53 65  nflictResult xSe
21320 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49 6e  ssionConflict(In
21330 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51  tPtr context, SQ
21340 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e  LiteChangeSetCon
21350 66 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c 20  flictType type, 
21360 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29  IntPtr iterator)
21370 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21380 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21390 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
213a0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
213b0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
213c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
213d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
213e0 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  al delegate SQLi
213f0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73  teErrorCode xSes
21400 73 69 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74 72  sionInput(IntPtr
21410 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72   context, IntPtr
21420 20 70 44 61 74 61 2c 20 72 65 66 20 69 6e 74 20   pData, ref int 
21430 6e 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21  nData);....#if !
21440 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21450 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21460 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
21470 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
21480 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21490 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
214a0 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
214b0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
214c0 65 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74  e xSessionOutput
214d0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
214e0 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 69   IntPtr pData, i
214f0 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20  nt nData);....  
21500 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
21510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21550 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21560 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21570 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21580 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21590 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
215a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
215b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
215c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
215d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
215e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
215f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21600 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21610 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
21620 5f 63 72 65 61 74 65 28 49 6e 74 50 74 72 20 64  _create(IntPtr d
21630 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
21640 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 65 73  , ref IntPtr ses
21650 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  sion);....#if !P
21660 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21670 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21690 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
216a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
216b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
216c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
216d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
216e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
216f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21700 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
21710 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64  sqlite3session_d
21720 65 6c 65 74 65 28 49 6e 74 50 74 72 20 73 65 73  elete(IntPtr ses
21730 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  sion);....#if !P
21740 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21750 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21760 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21770 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21780 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21790 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
217a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
217b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
217c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
217d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
217e0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
217f0 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e  qlite3session_en
21800 61 62 6c 65 28 49 6e 74 50 74 72 20 73 65 73 73  able(IntPtr sess
21810 69 6f 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29  ion, int enable)
21820 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21830 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21840 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21870 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21880 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21890 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
218a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
218b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
218c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
218d0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
218e0 33 73 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63  3session_indirec
218f0 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  t(IntPtr session
21900 2c 20 69 6e 74 20 69 6e 64 69 72 65 63 74 29 3b  , int indirect);
21910 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21920 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21930 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21940 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21950 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21960 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21970 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21980 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21990 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
219a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
219b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
219c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
219d0 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
219e0 69 6f 6e 5f 61 74 74 61 63 68 28 49 6e 74 50 74  ion_attach(IntPt
219f0 72 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b  r session, byte[
21a00 5d 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] tblName);....#
21a10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21a20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21a30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21a40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21a50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21a60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21a70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21a80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21a90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21aa0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21ab0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21ac0 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73 73  void sqlite3sess
21ad0 69 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72  ion_table_filter
21ae0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
21af0 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20   xSessionFilter 
21b00 78 46 69 6c 74 65 72 2c 20 49 6e 74 50 74 72 20  xFilter, IntPtr 
21b10 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
21b20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21b30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21b40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21b50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21b60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21b70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21b80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21b90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21ba0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21bb0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21bc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
21bd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
21be0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61  lite3session_cha
21bf0 6e 67 65 73 65 74 28 49 6e 74 50 74 72 20 73 65  ngeset(IntPtr se
21c00 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e  ssion, ref int n
21c10 43 68 61 6e 67 65 53 65 74 2c 20 72 65 66 20 49  ChangeSet, ref I
21c20 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74  ntPtr pChangeSet
21c30 29 3b 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  );...#if !PLATFO
21c40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21c50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21c70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21c80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21c90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21ca0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21cc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21cd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21ce0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21cf0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
21d00 73 69 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74 72  sion_diff(IntPtr
21d10 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d   session, byte[]
21d20 20 66 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79 74   fromDbName, byt
21d30 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65 66  e[] tblName, ref
21d40 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
21d50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21d60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21d70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21d80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21d90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21da0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21db0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21dc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21dd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21de0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21df0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21e00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
21e10 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
21e20 69 6f 6e 5f 70 61 74 63 68 73 65 74 28 49 6e 74  ion_patchset(Int
21e30 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66  Ptr session, ref
21e40 20 69 6e 74 20 6e 50 61 74 63 68 53 65 74 2c 20   int nPatchSet, 
21e50 72 65 66 20 49 6e 74 50 74 72 20 70 50 61 74 63  ref IntPtr pPatc
21e60 68 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  hSet);....#if !P
21e70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21e80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21e90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21ea0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21eb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21ec0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21ed0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21ee0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21ef0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21f00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21f10 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
21f20 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 73  qlite3session_is
21f30 65 6d 70 74 79 28 49 6e 74 50 74 72 20 73 65 73  empty(IntPtr ses
21f40 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  sion);....#if !P
21f50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21f60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21f70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21f80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21f90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21fa0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21fb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21fc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21fd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21fe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21ff0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
22000 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
22010 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72  e3changeset_star
22020 74 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65  t(ref IntPtr ite
22030 72 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e  rator, int nChan
22040 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43  geSet, IntPtr pC
22050 68 61 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23 69  hangeSet);....#i
22060 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22070 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22080 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22090 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
220a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
220b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
220c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
220d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
220e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
220f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
22100 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
22110 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
22120 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
22130 6e 65 78 74 28 49 6e 74 50 74 72 20 69 74 65 72  next(IntPtr iter
22140 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ator);....#if !P
22150 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22160 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22170 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22180 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22190 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
221a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
221b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
221c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
221d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
221e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
221f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
22200 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
22210 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 70 28 49  e3changeset_op(I
22220 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
22230 72 65 66 20 49 6e 74 50 74 72 20 70 54 62 6c 4e  ref IntPtr pTblN
22240 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f  ame, ref int nCo
22250 6c 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69 74  lumns, ref SQLit
22260 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f  eAuthorizerActio
22270 6e 43 6f 64 65 20 6f 70 2c 20 72 65 66 20 69 6e  nCode op, ref in
22280 74 20 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d  t bIndirect);...
22290 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
222a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
222b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
222c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
222d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
222e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
222f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22300 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22310 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22320 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22330 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22340 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
22350 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
22360 65 74 5f 70 6b 28 49 6e 74 50 74 72 20 69 74 65  et_pk(IntPtr ite
22370 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74  rator, ref IntPt
22380 72 20 70 50 72 69 6d 61 72 79 4b 65 79 73 2c 20  r pPrimaryKeys, 
22390 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73  ref int nColumns
223a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
223b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
223c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
223d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
223e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
223f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22400 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22410 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22420 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22430 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22440 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22450 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22460 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
22470 61 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50  angeset_old(IntP
22480 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
22490 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65   columnIndex, re
224a0 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29  f IntPtr pValue)
224b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
224c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
224d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
224e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
224f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22500 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22510 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22520 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22540 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22550 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22560 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22570 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
22580 6e 67 65 73 65 74 5f 6e 65 77 28 49 6e 74 50 74  ngeset_new(IntPt
22590 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20  r iterator, int 
225a0 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66  columnIndex, ref
225b0 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b   IntPtr pValue);
225c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
225d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
225e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
225f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22610 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22620 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22630 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22640 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22650 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22660 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22670 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
22680 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
22690 67 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49  geset_conflict(I
226a0 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
226b0 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c  int columnIndex,
226c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c   ref IntPtr pVal
226d0 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
226e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
226f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22700 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22710 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22760 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22770 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22780 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
22790 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
227a0 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e  changeset_fk_con
227b0 66 6c 69 63 74 73 28 49 6e 74 50 74 72 20 69 74  flicts(IntPtr it
227c0 65 72 61 74 6f 72 2c 20 72 65 66 20 69 6e 74 20  erator, ref int 
227d0 63 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23  conflicts);....#
227e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
227f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22800 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22810 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22820 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22830 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22840 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22850 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22860 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22870 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22880 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22890 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
228a0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
228b0 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
228c0 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23   iterator);....#
228d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
228e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
228f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22900 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22910 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22930 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22950 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22960 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22970 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
22990 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
229a0 5f 69 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c  _invert(int nIn,
229b0 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 72 65 66   IntPtr pIn, ref
229c0 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49   int nOut, ref I
229d0 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
229e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
229f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22a00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22a10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22a20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22a30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22a40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22a50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22a60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22a70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22a80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22a90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22aa0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
22ab0 74 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c  t_concat(int nA,
22ac0 20 49 6e 74 50 74 72 20 70 41 2c 20 69 6e 74 20   IntPtr pA, int 
22ad0 6e 42 2c 20 49 6e 74 50 74 72 20 70 42 2c 20 72  nB, IntPtr pB, r
22ae0 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66  ef int nOut, ref
22af0 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
22b00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22b10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22b20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22b30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22b40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22b50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22b60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22b70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22b80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22b90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22ba0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22bb0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
22bc0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
22bd0 67 72 6f 75 70 5f 6e 65 77 28 72 65 66 20 49 6e  group_new(ref In
22be0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
22bf0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22c00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22c10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22c20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22c30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22c40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22c50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22c60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22c70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22c80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22c90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22ca0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22cb0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
22cc0 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 28 49 6e  angegroup_add(In
22cd0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
22ce0 2c 20 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74  , int nData, Int
22cf0 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23  Ptr pData);....#
22d00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22d10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22d20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22d30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22d40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22d50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22d60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22d70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22d80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22d90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22da0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22db0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
22dc0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
22dd0 75 70 5f 6f 75 74 70 75 74 28 49 6e 74 50 74 72  up_output(IntPtr
22de0 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 72 65   changeGroup, re
22df0 66 20 69 6e 74 20 6e 44 61 74 61 2c 20 72 65 66  f int nData, ref
22e00 20 49 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d   IntPtr pData);.
22e10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22e20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22e30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22e40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22e50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22e60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22e70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22e80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22ea0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22eb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22ec0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
22ed0 63 68 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65  changegroup_dele
22ee0 74 65 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65  te(IntPtr change
22ef0 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Group);....#if !
22f00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22f10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22f20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22f30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22f40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22f60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22f70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22f80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22f90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22fa0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
22fb0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
22fc0 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70  te3changeset_app
22fd0 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ly(IntPtr db, in
22fe0 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e  t nChangeSet, In
22ff0 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 2c  tPtr pChangeSet,
23000 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20   xSessionFilter 
23010 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f  xFilter, xSessio
23020 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c  nConflict xConfl
23030 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74  ict, IntPtr cont
23040 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
23050 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23060 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23070 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23080 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23090 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
230a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
230b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
230c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
230d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
230e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
230f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
23100 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
23110 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79  3changeset_apply
23120 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 64 62 2c  _strm(IntPtr db,
23130 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78   xSessionInput x
23140 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49  Input, IntPtr pI
23150 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  n, xSessionFilte
23160 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73  r xFilter, xSess
23170 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e  ionConflict xCon
23180 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f  flict, IntPtr co
23190 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
231a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
231b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
231c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
231d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
231e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
231f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23200 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23210 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23220 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23230 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23240 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23250 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23260 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e  te3changeset_con
23270 63 61 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f  cat_strm(xSessio
23280 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 41 2c 20  nInput xInputA, 
23290 49 6e 74 50 74 72 20 70 49 6e 41 2c 20 78 53 65  IntPtr pInA, xSe
232a0 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75  ssionInput xInpu
232b0 74 42 2c 20 49 6e 74 50 74 72 20 70 49 6e 42 2c  tB, IntPtr pInB,
232c0 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
232d0 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
232e0 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
232f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23300 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23310 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23320 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23330 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23340 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23350 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23360 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23370 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23380 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23390 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
233a0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
233b0 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65  e3changeset_inve
233c0 72 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e  rt_strm(xSession
233d0 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e  Input xInput, In
233e0 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69  tPtr pIn, xSessi
233f0 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
23400 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
23410 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23420 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23430 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23440 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23450 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23460 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23470 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23480 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23490 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
234a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
234b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
234c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
234d0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
234e0 65 73 65 74 5f 73 74 61 72 74 5f 73 74 72 6d 28  eset_start_strm(
234f0 72 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61  ref IntPtr itera
23500 74 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70  tor, xSessionInp
23510 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74  ut xInput, IntPt
23520 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  r pIn);....#if !
23530 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23540 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23560 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23570 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23580 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23590 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
235a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
235b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
235c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
235d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
235e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
235f0 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67  te3session_chang
23600 65 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72  eset_strm(IntPtr
23610 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69   session, xSessi
23620 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
23630 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
23640 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23650 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23660 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23690 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
236a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
236b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
236c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
236d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
236e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
236f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23700 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
23710 6f 6e 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d  on_patchset_strm
23720 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
23730 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
23740 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
23750 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
23760 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23770 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23780 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23790 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
237a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
237b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
237c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
237d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
237e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
237f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23800 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
23810 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
23820 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64  e3changegroup_ad
23830 64 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68  d_strm(IntPtr ch
23840 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73  angeGroup, xSess
23850 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c  ionInput xInput,
23860 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d   IntPtr pIn);...
23870 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23880 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23890 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
238a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
238b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
238c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
238d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
238e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
238f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23900 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23910 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23920 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
23930 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
23940 72 6f 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d  roup_output_strm
23950 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
23960 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74  oup, xSessionOut
23970 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74  put xOutput, Int
23980 50 74 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64  Ptr pOut);..#end
23990 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
239a0 6f 6e 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  on..    #endregi
239b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
239c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
23a10 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65  gion sqlite inte
23a20 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e  rop api calls (.
23a30 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
23a40 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66  ework only)..#if
23a50 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
23a60 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
23a70 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
23a80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23a90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
23aa0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23ab0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
23ac0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
23ad0 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
23ae0 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f  ntPtr db, ref lo
23af0 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  ng rowId);....  
23b00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23b10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
23b20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23b30 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
23b40 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69  e3_memory_used_i
23b50 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20  nterop(ref long 
23b60 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
23b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23b80 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
23b90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23ba0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
23bb0 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
23bc0 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73  _interop(int res
23bd0 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67  etFlag, ref long
23be0 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
23bf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23c00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
23c10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23c20 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23c30 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
23c40 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
23c50 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
23c60 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
23c70 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
23c80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23c90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
23ca0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23cb0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23cc0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
23cd0 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
23ce0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
23cf0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
23d00 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
23d10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23d20 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
23d30 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
23d40 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
23d50 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ")]..    interna
23d60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23d70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23d80 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
23d90 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
23da0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
23db0 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61  ex, ref ulong va
23dc0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
23dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23de0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
23df0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23e00 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
23e10 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  lumn_double_inte
23e20 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
23e30 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
23e40 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
23e50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23e60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
23e70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23e80 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
23e90 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
23ea0 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
23eb0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
23ec0 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
23ed0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
23ee0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23ef0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
23f00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23f10 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
23f20 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
23f30 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
23f40 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
23f50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23f60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
23f70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23f80 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
23f90 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
23fa0 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
23fb0 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76  r p, ref Int64 v
23fc0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
23fd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23fe0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
23ff0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24000 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
24010 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74  esult_double_int
24020 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
24030 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  ext, ref double 
24040 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
24050 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24060 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
24070 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24080 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
24090 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74  result_int64_int
240a0 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
240b0 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76  ext, ref Int64 v
240c0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
240d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
240e0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
240f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24100 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
24110 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
24120 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f  le_module_intero
24130 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  p(..        IntP
24140 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
24150 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75  me, IntPtr pModu
24160 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  le, int iVersion
24170 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  , xCreate xCreat
24180 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e  e,..        xCon
24190 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78  nect xConnect, x
241a0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
241b0 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63  ndex, xDisconnec
241c0 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a  t xDisconnect,..
241d0 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
241e0 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e   xDestroy, xOpen
241f0 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78   xOpen, xClose x
24200 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78  Close, xFilter x
24210 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  Filter,..       
24220 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45   xNext xNext, xE
24230 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e  of xEof, xColumn
24240 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64   xColumn, xRowId
24250 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65   xRowId, xUpdate
24260 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20   xUpdate,..     
24270 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e     xBegin xBegin
24280 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78  , xSync xSync, x
24290 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20  Commit xCommit, 
242a0 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
242b0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46  ack,..        xF
242c0 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
242d0 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61  dFunction, xRena
242e0 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76  me xRename, xSav
242f0 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e  epoint xSavepoin
24300 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c  t,..        xRel
24310 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78  ease xRelease, x
24320 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
24330 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70  backTo, IntPtr p
24340 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20  ClientData,..   
24350 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64       xDestroyMod
24360 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ule xDestroyModu
24370 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  le);..#endif..  
24380 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f    // PLATFORM_CO
24390 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
243a0 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
243b0 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  RD..    #endregi
243c0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
243d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24410 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
24420 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65  gion Native Dele
24430 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  gates..#if INTER
24440 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
24450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24470 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
24480 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
24490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
244a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
244b0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
244c0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
244d0 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d  orCode xCreate(.
244e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
244f0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
24500 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
24510 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
24520 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
24530 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
24540 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
24550 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
24560 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
24570 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
24580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
245d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
245e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
245f0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
24600 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
24610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24620 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
24630 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
24640 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
24650 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
24660 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
24670 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
24680 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
24690 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
246a0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
246b0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
246c0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
246d0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
246e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
246f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
24740 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24750 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24760 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
24770 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
24780 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24790 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
247a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
247b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
247c0 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
247d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
247e0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
247f0 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
24800 20 20 20 29 3b 0d 0a 0d 0a 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 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
24860 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24870 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24880 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
24890 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
248a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
248b0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
248c0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
248d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
248e0 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20   xDisconnect(.. 
248f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
24900 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
24910 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
24920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24960 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24970 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24980 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
24990 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
249a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
249b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
249c0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
249d0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
249e0 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
249f0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
24a00 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
24a10 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
24a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a60 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
24a70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24a80 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
24a90 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
24aa0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
24ab0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24ac0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
24ad0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
24ae0 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28  ErrorCode xOpen(
24af0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
24b00 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
24b10 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72   ref IntPtr pCur
24b20 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
24b30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
24b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24b80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24b90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24ba0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
24bb0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
24bc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24bd0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
24be0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
24bf0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
24c00 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a  orCode xClose(..
24c10 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
24c20 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
24c30 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
24c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c80 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
24c90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24ca0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
24cb0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
24cc0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
24cd0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24ce0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
24cf0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
24d00 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65  ErrorCode xFilte
24d10 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r(..        IntP
24d20 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
24d30 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c       int idxNum,
24d40 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
24d50 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20   idxStr,..      
24d60 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
24d70 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
24d80 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
24d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
24de0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24df0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24e00 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
24e10 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
24e20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24e30 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
24e40 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
24e50 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
24e60 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
24e70 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
24e80 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
24e90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
24ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24ee0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24ef0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24f00 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
24f10 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
24f20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24f30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
24f40 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
24f50 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d  egate int xEof(.
24f60 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
24f70 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
24f80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
24f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fd0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
24fe0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24ff0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
25000 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
25010 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
25020 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25030 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
25040 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
25050 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75  eErrorCode xColu
25060 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  mn(..        Int
25070 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
25080 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
25090 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
250a0 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29  int index..    )
250b0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
250c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25100 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
25110 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25120 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
25130 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
25140 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
25150 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25160 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
25170 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
25180 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
25190 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  wId(..        In
251a0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
251b0 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
251c0 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
251d0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
251e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
251f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25220 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25230 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25240 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
25250 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
25260 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
25270 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
25280 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
25290 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
252a0 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
252b0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
252c0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
252d0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
252e0 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
252f0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
25300 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
25310 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
25320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25360 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
25370 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25380 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
25390 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
253a0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
253b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
253c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
253d0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
253e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
253f0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  gin(..        In
25400 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
25410 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
25420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25460 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
25470 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25480 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
25490 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
254a0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
254b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
254c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
254d0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
254e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
254f0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ync(..        In
25500 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
25510 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
25520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25560 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
25570 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25580 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
25590 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
255a0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
255b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
255c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
255d0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
255e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
255f0 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
25600 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
25610 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
25620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25660 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
25670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25690 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
256a0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
256b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
256c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
256d0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
256e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
256f0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
25700 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
25710 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
25770 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25780 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25790 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
257a0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
257b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
257c0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
257d0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
257e0 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e  ate int xFindFun
257f0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
25800 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
25810 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c         int nArg,
25820 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
25830 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
25840 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62   ref SQLiteCallb
25850 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ack callback,.. 
25860 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
25870 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20  r pUserData..   
25880 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
25890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
258e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
258f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
25900 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
25910 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
25920 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25930 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
25940 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
25950 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
25960 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
25970 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
25980 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
25990 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  New..    );.... 
259a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
259b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
259f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25a00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25a10 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
25a20 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
25a30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25a40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
25a50 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
25a60 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
25a70 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e  orCode xSavepoin
25a80 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
25a90 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
25aa0 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
25ab0 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
25ac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
25b10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25b20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25b30 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
25b40 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
25b50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25b60 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
25b70 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
25b80 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
25b90 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a  Code xRelease(..
25ba0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25bb0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
25bc0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
25bd0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
25be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
25c30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25c40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25c50 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
25c60 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
25c70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25c80 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
25c90 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
25ca0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25cb0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
25cc0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
25cd0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
25ce0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
25cf0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
25d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
25d50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25d60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25d70 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
25d80 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
25d90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25da0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25db0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
25dc0 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64  void xDestroyMod
25dd0 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65  ule(IntPtr pClie
25de0 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66  ntData);..#endif
25df0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
25e00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
25e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
25e60 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74  on Native Struct
25e70 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ures..#if INTERO
25e80 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
25e90 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
25ea0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
25eb0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
25ec0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
25ed0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
25ee0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
25ef0 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69  ublic int iVersi
25f00 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
25f10 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65  lic xCreate xCre
25f20 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
25f30 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43  blic xConnect xC
25f40 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
25f50 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64   public xBestInd
25f60 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a  ex xBestIndex;..
25f70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
25f80 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
25f90 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
25fa0 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79   public xDestroy
25fb0 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20   xDestroy;..    
25fc0 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e      public xOpen
25fd0 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20   xOpen;..       
25fe0 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78   public xClose x
25ff0 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  Close;..        
26000 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78  public xFilter x
26010 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  Filter;..       
26020 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e   public xNext xN
26030 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ext;..        pu
26040 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d  blic xEof xEof;.
26050 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26060 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b  xColumn xColumn;
26070 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
26080 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d   xRowId xRowId;.
26090 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
260a0 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 3b  xUpdate xUpdate;
260b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
260c0 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d   xBegin xBegin;.
260d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
260e0 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20  xSync xSync;..  
260f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f        public xCo
26100 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20  mmit xCommit;.. 
26110 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
26120 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63  ollback xRollbac
26130 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  k;..        publ
26140 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ic xFindFunction
26150 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d   xFindFunction;.
26160 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26170 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b  xRename xRename;
26180 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65  ..        /* The
26190 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   methods above a
261a0 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20  re in version 1 
261b0 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d  of the sqlite3_m
261c0 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
261d0 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65  * object.  Those
261e0 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76   below are for v
261f0 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65  ersion 2 and gre
26200 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ater. */..      
26210 20 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f    public xSavepo
26220 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d  int xSavepoint;.
26230 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26240 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
26250 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
26260 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  ic xRollbackTo x
26270 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20  RollbackTo;..   
26280 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
26290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
262e0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
262f0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
26300 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
26310 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
26320 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  vtab..    {..   
26330 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
26340 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tr pModule;..   
26350 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
26360 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47  nRef; /* NO LONG
26370 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  ER USED */..    
26380 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
26390 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
263a0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
263b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
263f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
26400 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
26410 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
26420 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
26430 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
26440 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
26450 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
26460 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d  c IntPtr pVTab;.
26470 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
26480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
264d0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
264e0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
264f0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
26500 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
26510 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
26520 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
26530 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
26540 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
26550 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
26560 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
26570 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
26580 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
26590 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
265a0 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
265b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
265c0 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20   if (constraint 
265d0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
265e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
265f0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
26600 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43   = constraint.iC
26610 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
26620 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e          op = con
26630 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20  straint.op;..   
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61               usa
26650 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  ble = constraint
26660 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  .usable;..      
26670 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f            iTermO
26680 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69  ffset = constrai
26690 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt.iTermOffset;.
266a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
266b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
266c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
266d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266f0 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
26710 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
26720 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
26730 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
26740 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
26750 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  tOp op;..       
26760 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
26770 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ble;..        pu
26780 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66  blic int iTermOf
26790 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  fset;..    }....
267a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
267f0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
26800 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
26810 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
26820 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
26830 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
26840 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a  orderby..    {..
26850 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
26860 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
26870 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
26880 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72     SQLiteIndexOr
26890 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20  derBy orderBy.. 
268a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
268b0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
268c0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
268d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
268e0 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d  rderBy != null).
268f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26910 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42  iColumn = orderB
26920 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  y.iColumn;..    
26930 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63              desc
26940 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b   = orderBy.desc;
26950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26960 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
26970 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
26980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
269c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
269d0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
269e0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
269f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
26a00 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a   byte desc;   /*
26a10 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
26a20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
26a30 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
26a40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26a90 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
26aa0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
26ab0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
26ac0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
26ad0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
26ae0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
26af0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
26b00 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
26b10 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
26b20 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
26b30 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
26b40 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e  straintUsage con
26b50 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
26b60 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
26b70 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
26b80 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
26b90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
26ba0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
26bb0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
26bc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26bd0 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78         argvIndex
26be0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
26bf0 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20  ge.argvIndex;.. 
26c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
26c10 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  mit = constraint
26c20 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20  Usage.omit;..   
26c30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26c40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26c50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
26ca0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61      public int a
26cb0 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20  rgvIndex; /* if 
26cc0 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  >0, constraint i
26cd0 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
26ce0 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20  o xFilter */..  
26cf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
26d00 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44  e omit;     /* D
26d10 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
26d20 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
26d30 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  raint */..    }.
26d40 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d90 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
26da0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
26db0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
26dc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26dd0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
26de0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a  ex_info..    {..
26df0 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
26e00 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
26e10 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72  blic int nConstr
26e20 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20  aint; /* Number 
26e30 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43  of entries in aC
26e40 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
26e50 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
26e60 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b  Ptr aConstraint;
26e70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
26e80 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20   int nOrderBy;  
26e90 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65    /* Number of e
26ea0 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72  ntries in aOrder
26eb0 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  By */..        p
26ec0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72  ublic IntPtr aOr
26ed0 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20  derBy;..        
26ee0 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20  /* Outputs */.. 
26ef0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
26f00 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
26f10 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20  Usage;..        
26f20 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75  public int idxNu
26f30 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  m;           /* 
26f40 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69  Number used to i
26f50 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65  dentify the inde
26f60 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  x */..        pu
26f70 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53  blic string idxS
26f80 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74  tr;        /* St
26f90 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f  ring, possibly o
26fa0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c  btained from sql
26fb0 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a  ite3_malloc */..
26fc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
26fd0 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
26fe0 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
26ff0 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
27000 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
27010 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
27020 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43  lic int orderByC
27030 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75  onsumed;  /* Tru
27040 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
27050 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a  lready ordered *
27060 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
27070 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74  c double estimat
27080 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d  edCost; /* Estim
27090 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
270a0 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f  ng this index */
270b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
270c0 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52   long estimatedR
270d0 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61  ows;   /* Estima
270e0 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  ted number of ro
270f0 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a  ws returned */..
27100 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
27110 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
27120 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73  idxFlags; /* Mas
27130 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45  k of SQLITE_INDE
27140 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a  X_SCAN_* flags *
27150 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
27160 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20  c long colUsed; 
27170 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
27180 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e  : Mask of column
27190 73 20 75 73 65 64 20 62 79 20 73 74 61 74 65 6d  s used by statem
271a0 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23  ent */..    }..#
271b0 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
271c0 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
271d0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
271e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27230 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f   #region .NET Co
27240 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
27250 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c 48  (only) CriticalH
27260 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66  andle Class..#if
27270 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
27280 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e  TFRAMEWORK..  in
27290 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
272a0 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
272b0 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
272c0 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69  le..  {..    pri
272d0 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f  vate bool _isClo
272e0 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63  sed;..    protec
272f0 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c  ted IntPtr handl
27300 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  e;....    protec
27310 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ted CriticalHand
27320 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69  le(IntPtr invali
27330 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20  dHandleValue).. 
27340 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
27350 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64  le = invalidHand
27360 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  leValue;..      
27370 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73  _isClosed = fals
27380 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
27390 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65   ~CriticalHandle
273a0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
273b0 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
273c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
273d0 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61  rivate void Clea
273e0 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nup()..    {..  
273f0 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65      if (!IsClose
27400 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  d)..      {..   
27410 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
27420 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
27430 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61       if (!IsInva
27440 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lid)..        {.
27450 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61  .          Relea
27460 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  seHandle();..   
27470 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
27480 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
27490 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
274a0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
274b0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
274c0 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  Close()..    {..
274d0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
274e0 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
274f0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
27500 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d  ispose()..    {.
27510 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
27520 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
27530 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
27540 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
27550 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
27560 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
27570 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20   Cleanup();..   
27580 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
27590 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f  ted abstract boo
275a0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
275b0 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  );....    protec
275c0 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64  ted void SetHand
275d0 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29  le(IntPtr value)
275e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68  ..    {..      h
275f0 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a  andle = value;..
27600 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
27610 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64  lic void SetHand
27620 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20  leAsInvalid().. 
27630 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43     {..      _isC
27640 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
27650 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
27660 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
27670 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
27680 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73  blic bool IsClos
27690 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ed..    {..     
276a0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69   get { return _i
276b0 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20  sClosed; }..    
276c0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
276d0 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73  abstract bool Is
276e0 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a  Invalid..    {..
276f0 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20        get;..    
27700 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66  }....  }..#endif
27710 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
27720 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27770 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
27780 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
27790 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  nHandle Class.. 
277a0 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68     // Handles th
277b0 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61  e unmanaged data
277c0 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e  base pointer, an
277d0 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  d provides final
277e0 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20  ization..    // 
277f0 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d  support for it..
27800 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
27810 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
27820 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
27830 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
27840 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53  le..    {..#if S
27850 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26  QLITE_STANDARD &
27860 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  & !PLATFORM_COMP
27870 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27880 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64        internal d
27890 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f  elegate void Clo
278a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
278b0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
278c0 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
278d0 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
278e0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
278f0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
27900 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65  tatic CloseConne
27910 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c  ctionCallback cl
27920 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d  oseConnection =.
27930 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
27940 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
27950 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  nection;..#endif
27960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
27970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279b0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
279c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
279d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
279e0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
279f0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
27a00 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
27a10 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
27a20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
27a70 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
27a80 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d  ol ownHandle;...
27a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
27aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
27af0 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
27b00 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
27b10 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
27b20 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
27b30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27b40 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
27b50 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
27b60 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
27b70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27b80 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
27b90 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
27ba0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
27bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27bc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27bd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
27be0 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
27bf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
27c00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
27c10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27c20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
27c30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27c40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27c90 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
27ca0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
27cb0 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  andle(IntPtr db,
27cc0 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29   bool ownHandle)
27cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
27ce0 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d  this(ownHandle).
27cf0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
27d00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27d10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
27d20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
27d30 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
27d40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27d60 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20  his.ownHandle = 
27d70 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
27d80 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
27d90 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
27da0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27db0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27e10 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
27e20 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
27e30 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e(bool ownHandle
27e40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
27e50 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
27e60 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
27e70 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
27e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
27e90 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
27ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
27eb0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
27ec0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
27ed0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
27ee0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
27ef0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
27f00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27f50 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
27f60 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
27f70 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
27f80 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
27f90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27fa0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
27fb0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
27fc0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
27fd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27fe0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
27ff0 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
28000 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
28010 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28020 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
28030 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
28040 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28050 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
28060 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28070 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
28080 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
28090 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
280a0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
280b0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
280c0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
280d0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
280e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
280f0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
28100 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
28110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28120 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
28130 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
28140 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
28150 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
28160 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
28170 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
28180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28190 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
281a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
281b0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
281c0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
281d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
281e0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
281f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28200 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
28210 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28220 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
28230 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
28240 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
28250 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
28260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28270 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
28280 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
28290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282a0 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
282b0 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c  nection: {0}", l
282c0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
282d0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
282e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
282f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
28300 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
28310 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28320 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
28330 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
28340 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
28350 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
28360 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28380 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
28390 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
283a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
283c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
283d0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
283e0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61  nection(this, ha
283f0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
28400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28410 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
28420 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
28430 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
28440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28450 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
28460 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
28470 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
28480 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
28490 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
284a0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
284b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
284c0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
284d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
284e0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
284f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
28500 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
28510 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
28520 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
28530 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
28540 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
28550 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
28560 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
28570 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
28580 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
28590 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
285a0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
285b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
285d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
285e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
285f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
28600 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
28610 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
28620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28630 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
28640 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
28650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28660 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
28670 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63  ection: {0}, exc
28680 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
28690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286a0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
286b0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
286c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
286d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
286e0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
286f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
28710 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
28720 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28730 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
28740 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
28750 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28760 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
28770 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
28780 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
28790 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
287a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
287b0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
287c0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
287d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
287e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
287f0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
28800 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28810 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
28820 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
28830 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
28840 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
28850 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
288a0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
288b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
288c0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
288d0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
288e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
288f0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
28900 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
28910 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65   DebugData.conne
28920 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20  ctionCount);..  
28930 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
28940 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
28950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28990 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
289a0 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e  blic bool OwnHan
289b0 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
289c0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
289d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
289e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
289f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
28a10 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
28a20 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
28a30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28a50 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b  eturn ownHandle;
28a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
28a80 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
28a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
28aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
28af0 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
28b00 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
28b10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28b20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
28b30 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
28b40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
28b50 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
28b60 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
28b70 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
28b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
28b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28ba0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
28bb0 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
28bc0 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
28bd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28be0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
28bf0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
28c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c40 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
28c50 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
28c60 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
28c70 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
28c80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
28c90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28ca0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
28cb0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
28cc0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
28cd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28cf0 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
28d00 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
28d10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
28d20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
28d30 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
28d40 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d90 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
28da0 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  n SQLiteStatemen
28db0 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  tHandle Class.. 
28dc0 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
28dd0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
28de0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
28df0 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65  d SQLite stateme
28e00 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nts...    intern
28e10 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
28e20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
28e30 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
28e40 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
28e50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
28e60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28e70 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
28e80 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
28e90 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
28ea0 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
28eb0 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
28f10 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
28f20 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
28f30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
28f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28f90 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
28fa0 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
28fb0 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61  IntPtr(SQLiteSta
28fc0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d  tementHandle stm
28fd0 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
28fe0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
28ff0 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tmt != null)..  
29000 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
29010 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
29020 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29030 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
29040 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29   (stmt.syncRoot)
29050 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
29060 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29080 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
29090 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
290a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
290b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
290c0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
290d0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
290e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
290f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29130 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29140 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
29150 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
29160 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
29170 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
29180 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  tr stmt)..      
29190 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
291a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
291b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
291c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
291d0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
291e0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
291f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
29210 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
29230 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d  etHandle(stmt);.
29240 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29250 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29260 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
292b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
292c0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
292d0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
292e0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
292f0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
29300 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
29310 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
29320 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
29330 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
29340 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
29350 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
29360 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
29370 20 20 20 20 20 20 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 2f 2f 2f 2f 0d 0a 0d  /////////////...
293c0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
293d0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
293e0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
293f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
29400 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
29410 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
29420 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29430 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
29450 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
29460 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
29470 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
29490 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
294a0 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
294b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
294c0 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
294d0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
294e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
294f0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
29500 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
29510 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
29520 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
29530 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
29540 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
29550 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
29560 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29580 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
29590 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
295a0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
295b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295c0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
295d0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
295e0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
295f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
29600 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
29610 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
29620 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
29630 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29640 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
29650 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
29660 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29680 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
29690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
296a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
296b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
296c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
296d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
296e0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
296f0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
29700 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29720 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
29730 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
29740 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  t(cnn, handle);.
29750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29760 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
29770 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
29780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29790 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
297a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
297b0 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
297c0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
297d0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
297e0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
297f0 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d  DebugData.statem
29800 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  entCount);..#end
29810 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
29820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29830 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
29840 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
29850 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
29860 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
29870 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
29880 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
29890 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
298a0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
298b0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
298c0 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
298d0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
298e0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
298f0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
29900 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
29910 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
29920 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29940 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
29950 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
29960 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
29970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29980 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
29990 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
299a0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
299c0 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
299d0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
299e0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a00 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
29a10 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
29a20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
29a40 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
29a50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29a60 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
29a70 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
29a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
29a90 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
29aa0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
29ab0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29ac0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
29ad0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
29ae0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29b10 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
29b20 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
29b30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29b40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
29b50 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
29b60 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
29b70 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
29b80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
29b90 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
29ba0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29bb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
29c00 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
29c10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
29c20 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
29c30 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
29c40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29c50 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
29c60 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
29c70 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f  Data.statementCo
29c80 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
29c90 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
29ca0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29cf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
29d00 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
29d10 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
29d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
29d30 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
29d40 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
29d50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d70 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
29d80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
29d90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29db0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
29dc0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
29dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29de0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
29df0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
29e00 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e50 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
29e60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
29e70 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
29e80 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
29e90 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
29ea0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29eb0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
29ec0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
29ed0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
29ee0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29ef0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
29f00 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
29f10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
29f20 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
29f30 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
29f40 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
29f50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29fa0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
29fb0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
29fc0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
29fd0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
29fe0 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
29ff0 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
2a000 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e   backup objects.
2a010 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2a020 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2a030 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a  teBackupHandle :
2a040 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2a050 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
2a060 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a070 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2a080 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
2a090 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2a0a0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2a0b0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2a0c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a110 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2a120 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2a130 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
2a140 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a190 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2a1a0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2a1b0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2a1c0 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
2a1d0 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  le backup)..    
2a1e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a1f0 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d     if (backup !=
2a200 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a210 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2a220 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a230 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2a240 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b        lock (back
2a250 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  up.syncRoot)..#e
2a260 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2a270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a280 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2a290 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c  urn backup.handl
2a2a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2a2b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2a2c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a2d0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
2a2e0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
2a2f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a340 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
2a350 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61  nternal SQLiteBa
2a360 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74  ckupHandle(SQLit
2a370 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2a380 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61  e cnn, IntPtr ba
2a390 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20  ckup)..         
2a3a0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2a3b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2a3c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a3d0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2a3e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2a3f0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2a400 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a410 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2a420 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
2a430 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2a440 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a  andle(backup);..
2a450 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a460 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a470 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a4c0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2a4d0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
2a4e0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2a4f0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
2a500 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
2a510 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2a520 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
2a530 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
2a540 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2a550 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
2a560 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2a570 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2a5d0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
2a5e0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
2a5f0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
2a600 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a610 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2a620 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2a630 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a640 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2a650 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
2a660 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
2a670 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
2a680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a690 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
2a6a0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
2a6b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a6c0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
2a6d0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2a6e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2a6f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
2a700 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
2a710 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
2a720 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
2a730 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2a740 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2a750 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2a760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a770 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a780 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2a790 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2a7a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2a7b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2a7d0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2a7e0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2a7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a800 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
2a810 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
2a820 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
2a830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a840 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a850 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2a860 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2a880 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
2a890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a8a0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2a8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a8c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a8d0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
2a8e0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
2a8f0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2a900 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a920 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
2a930 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
2a940 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
2a950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a960 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
2a970 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
2a980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a990 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2a9a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
2a9b0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2a9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9d0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2a9e0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2a9f0 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
2aa00 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
2aa10 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
2aa20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2aa30 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2aa40 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
2aa50 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2aa60 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2aa80 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
2aa90 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
2aaa0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2aab0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2aac0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2aad0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
2aae0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2aaf0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2ab00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ab10 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2ab20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ab30 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2ab40 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2ab50 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2ab60 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2ab70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab80 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2ab90 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2aba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abb0 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
2abc0 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  up: {0}, excepti
2abd0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
2abe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abf0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
2ac00 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac30 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2ac40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ac50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2ac60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2ac70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ac80 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
2ac90 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2aca0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2acb0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2acc0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2acd0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2ace0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2acf0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ad00 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2ad10 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
2ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ad30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2ad40 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2ad50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2ad60 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
2ad70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ad80 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2ad90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ada0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2adf0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2ae00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2ae10 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
2ae20 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
2ae30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ae40 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
2ae50 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2ae60 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75  ugData.backupCou
2ae70 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
2ae80 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2ae90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2aee0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2aef0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
2af00 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
2af10 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
2af20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2af30 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2af40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2af50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af60 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2af70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2af80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2af90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2afa0 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
2afb0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2afc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2afd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2afe0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2aff0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b040 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
2b050 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
2b060 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
2b070 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
2b080 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2b090 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2b0a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2b0b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2b0c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2b0d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b0e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
2b0f0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
2b100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2b110 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
2b120 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
2b130 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2b140 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b190 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2b1a0 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61  teBlobHandle Cla
2b1b0 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
2b1c0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
2b1d0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
2b1e0 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 6c  anaged SQLite bl
2b1f0 6f 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20  ob objects...   
2b200 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
2b210 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 6c 6f   class SQLiteBlo
2b220 62 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  bHandle : Critic
2b230 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
2b240 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2b250 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b260 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2b270 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
2b280 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
2b290 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
2b2a0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b300 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2b310 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2b320 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b370 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b380 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2b390 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
2b3a0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
2b3b0 6c 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d  lobHandle blob).
2b3c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2b3d0 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 62          if (blob
2b3e0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2b3f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2b400 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2b410 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2b420 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62           lock (b
2b430 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  lob.syncRoot)..#
2b440 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2b450 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b470 74 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65  turn blob.handle
2b480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b490 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2b4a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2b4b0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2b4c0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2b4d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b520 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2b530 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f  ternal SQLiteBlo
2b540 62 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  bHandle(SQLiteCo
2b550 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2b560 6e 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f 62 29  nn, IntPtr blob)
2b570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2b580 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2b590 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2b5a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2b5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2b5c0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2b5d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2b5e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b5f0 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
2b600 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
2b610 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2b620 28 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20  (blob);..       
2b630 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2b640 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b690 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b6a0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 6c  private SQLiteBl
2b6b0 6f 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  obHandle()..    
2b6c0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
2b6d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2b6e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
2b6f0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2b700 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2b710 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
2b720 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
2b730 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
2b740 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2b750 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b7a0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
2b7b0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
2b7c0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
2b7d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b7e0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2b7f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
2b800 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b810 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2b820 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b830 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
2b840 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
2b850 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
2b860 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
2b870 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
2b880 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
2b890 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
2b8a0 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
2b8b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2b8d0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f  iteBase.CloseBlo
2b8e0 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  b(cnn, localHand
2b8f0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
2b900 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2b910 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2b920 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2b930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b940 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b950 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2b960 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2b970 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2b980 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2b9a0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2b9b0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9d0 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b     "CloseBlob: {
2b9e0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
2b9f0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
2ba00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ba20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
2ba30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ba50 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba70 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2ba80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2baa0 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
2bab0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2bac0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2bad0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2baf0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
2bb00 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e  oseBlob(cnn, han
2bb10 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
2bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2bb30 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
2bb40 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
2bb50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2bb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2bb70 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
2bb80 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2bb90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
2bba0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2bbb0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2bbc0 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  blobCount);..#en
2bbd0 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbf0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2bc00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2bc10 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
2bc20 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2bc30 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2bc40 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2bc50 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
2bc60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2bc70 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
2bc80 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
2bc90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2bca0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
2bcb0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2bcc0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2bcd0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bcf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd00 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2bd10 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2bd20 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2bd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd40 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2bd50 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2bd60 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2bd80 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20  CloseBlob: {0}, 
2bd90 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
2bda0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bdb0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
2bdc0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
2bdd0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2bde0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2bdf0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2be10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2be20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2be30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2be40 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2be50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2be60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2be70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2be90 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2bea0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2beb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2bed0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
2bee0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2bef0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2bf00 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
2bf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2bf20 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
2bf30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2bf40 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2bf50 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2bf60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
2bfc0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2bfd0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
2bfe0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
2bff0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c000 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
2c010 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2c020 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c  ref DebugData.bl
2c030 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  obCount);..     
2c040 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2c050 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c0a0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2c0b0 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
2c0c0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
2c0d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c0e0 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
2c0f0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2c100 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2c110 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2c120 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2c130 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c160 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
2c170 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
2c180 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2c190 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2c1a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2c1b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c200 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
2c210 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
2c220 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
2c230 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
2c240 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2c250 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c260 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2c270 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2c280 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2c290 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2c2b0 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
2c2c0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
2c2d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2c2e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
2c2f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2c300 7d 0d 0a                                         }..