System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 096244bb6a322942594742f0559dc08d3fb77b34:


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 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
02d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
02e0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02f0: 54 65 78 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  Text;..#endif...
0300: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0310: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
0320: 7c 7c 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  || COUNT_HANDLE.
0330: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0340: 54 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64  Threading;..#end
0350: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
0360: 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20 20 23  stem.Xml;....  #
0370: 72 65 67 69 6f 6e 20 44 65 62 75 67 20 44 61 74  region Debug Dat
0380: 61 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  a Static Class..
0390: 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
03a0: 20 7c 7c 20 44 45 42 55 47 0d 0a 20 20 2f 2f 2f   || DEBUG..  ///
03b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
03c0: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 65 6e 63  / This class enc
03d0: 61 70 73 75 6c 61 74 65 73 20 73 6f 6d 65 20 74  apsulates some t
03e0: 72 61 63 6b 69 6e 67 20 64 61 74 61 20 74 68 61  racking data tha
03f0: 74 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65  t is used for de
0400: 62 75 67 67 69 6e 67 0d 0a 20 20 2f 2f 2f 20 61  bugging..  /// a
0410: 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f  nd testing purpo
0420: 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  ses...  /// </su
0430: 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
0440: 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
0450: 44 65 62 75 67 44 61 74 61 0d 0a 20 20 7b 0d 0a  DebugData..  {..
0460: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
0470: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
0480: 20 20 23 72 65 67 69 6f 6e 20 43 72 69 74 69 63    #region Critic
0490: 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75 6e 74 73  al Handle Counts
04a0: 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e   (Debug Build On
04b0: 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  ly)..#if COUNT_H
04c0: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 0d  ANDLE..      //.
04d0: 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
04e0: 54 68 65 73 65 20 63 6f 75 6e 74 73 20 72 65 70  These counts rep
04f0: 72 65 73 65 6e 74 20 74 68 65 20 74 6f 74 61 6c  resent the total
0500: 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74   number of outst
0510: 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  anding..      //
0520: 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64 69 73 70         (non-disp
0530: 6f 73 65 64 29 20 43 72 69 74 69 63 61 6c 48 61  osed) CriticalHa
0540: 6e 64 6c 65 20 64 65 72 69 76 65 64 20 6f 62 6a  ndle derived obj
0550: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20  ect instances.. 
0560: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 72       //       cr
0570: 65 61 74 65 64 20 62 79 20 74 68 69 73 20 6c 69  eated by this li
0580: 62 72 61 72 79 20 61 6e 64 20 61 72 65 20 70 72  brary and are pr
0590: 69 6d 61 72 69 6c 79 20 66 6f 72 20 75 73 65 20  imarily for use 
05a0: 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  by..      //    
05b0: 20 20 20 74 68 65 20 74 65 73 74 20 73 75 69 74     the test suit
05c0: 65 2e 20 20 54 68 65 73 65 20 63 6f 75 6e 74 73  e.  These counts
05d0: 20 61 72 65 20 69 6e 63 72 65 6d 65 6e 74 65 64   are incremented
05e0: 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   by the..      /
05f0: 2f 20 20 20 20 20 20 20 61 73 73 6f 63 69 61 74  /       associat
0600: 65 64 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 20  ed constructors 
0610: 61 6e 64 20 61 72 65 20 64 65 63 72 65 6d 65 6e  and are decremen
0620: 74 65 64 20 75 70 6f 6e 20 74 68 65 0d 0a 20 20  ted upon the..  
0630: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 75 63      //       suc
0640: 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c 65 74 69  cessful completi
0650: 6f 6e 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69  on of the associ
0660: 61 74 65 64 20 52 65 6c 65 61 73 65 48 61 6e 64  ated ReleaseHand
0670: 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  le..      //    
0680: 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20     methods...   
0690: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 6e 74     //..      int
06a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
06b0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74   connectionCount
06c0: 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ;..      interna
06d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 73 74 61  l static int sta
06e0: 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20  tementCount;..  
06f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
0700: 74 69 63 20 69 6e 74 20 62 61 63 6b 75 70 43 6f  tic int backupCo
0710: 75 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  unt;..#endif..  
0720: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0730: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
0740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0790: 6f 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64  on Settings Read
07a0: 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42   Counts (Debug B
07b0: 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20  uild Only)..#if 
07c0: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f  DEBUG..      ///
07d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07e0: 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20    /// This lock 
07f0: 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65  is used to prote
0800: 63 74 20 74 68 65 20 73 74 61 74 69 63 0d 0a 20  ct the static.. 
0810: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
0820: 65 66 3d 22 73 65 74 74 69 6e 67 52 65 61 64 43  ef="settingReadC
0830: 6f 75 6e 74 73 22 20 2f 3e 20 66 69 65 6c 64 2e  ounts" /> field.
0840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0850: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0860: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0870: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
0880: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
0890: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
08a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
08b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
08f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0900: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0910: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
0920: 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20 63  tores the read c
0930: 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75  ounts for the ru
0940: 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74  ntime configurat
0950: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  ion..      /// s
0960: 65 74 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69  ettings.  This i
0970: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e  nformation is on
0980: 6c 79 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e  ly recorded when
0990: 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65   compiled in the
09a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62  ..      /// "Deb
09b0: 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ug" build config
09c0: 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  uration...      
09d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
09e0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
09f0: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
0a00: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74  string, int> set
0a10: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d  tingReadCounts;.
0a20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
0a30: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
0a40: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
0a50: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
0a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
0aa0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
0ab0: 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Public Methods..
0ac0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0ad0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
0ae0: 72 65 61 74 65 73 20 74 68 65 20 64 69 63 74 69  reates the dicti
0af0: 6f 6e 61 72 79 20 75 73 65 64 20 74 6f 20 73 74  onary used to st
0b00: 6f 72 65 20 74 68 65 20 72 65 61 64 20 63 6f 75  ore the read cou
0b10: 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f 66 20  nts for each of 
0b20: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72  the..      /// r
0b30: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
0b40: 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20 20  tion settings.  
0b50: 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72  These numbers ar
0b60: 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  e used for debug
0b70: 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ging..      /// 
0b80: 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72 70  and testing purp
0b90: 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20  oses only...    
0ba0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0bb0: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73  ..      public s
0bc0: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
0bd0: 61 6c 69 7a 65 53 65 74 74 69 6e 67 52 65 61 64  alizeSettingRead
0be0: 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20 20 20 20  Counts()..      
0bf0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  {..          loc
0c00: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
0c10: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
0c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
0c30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
0c40: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
0c50: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 73 74 61   the list of sta
0c60: 74 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c  tistics that wil
0c70: 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  l contain the.. 
0c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
0c90: 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20        number of 
0ca0: 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69  times each setti
0cb0: 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65 65  ng value has bee
0cc0: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
0cd0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
0ce0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
0cf0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
0d00: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
0d10: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
0d20: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  ngReadCounts = n
0d30: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
0d40: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20  ring, int>();.. 
0d50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
0d60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
0d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0db0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0dc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0dd0: 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d 65       /// Increme
0de0: 6e 74 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  nts the read cou
0df0: 6e 74 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  nt for the speci
0e00: 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63 6f 6e  fied runtime con
0e10: 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20  figuration..    
0e20: 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 2e 20 20    /// setting.  
0e30: 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72  These numbers ar
0e40: 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  e used for debug
0e50: 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e 67  ging and testing
0e60: 20 70 75 72 70 6f 73 65 73 0d 0a 20 20 20 20 20   purposes..     
0e70: 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20   /// only...    
0e80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
0ea0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
0eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
0ec0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
0ed0: 6e 67 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a  ng being read...
0ee0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0ef0: 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  m>..      public
0f00: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63   static void Inc
0f10: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
0f20: 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20  dCount(..       
0f30: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a     string name..
0f40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
0f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
0f60: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
0f70: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
0f80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0f90: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
0fa0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64      // NOTE: Upd
0fb0: 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 66  ate statistics f
0fc0: 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  or this setting 
0fd0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
0fe0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0ff0: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74          if (sett
1000: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21 3d  ingReadCounts !=
1010: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1020: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1030: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
1040: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
1050: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1060: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1070: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
1080: 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a  e, out count))..
1090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a0: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
10b0: 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20  eadCounts[name] 
10c0: 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20  = count + 1;..  
10d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
1100: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e  ttingReadCounts.
1110: 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20  Add(name, 1);.. 
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1130: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1140: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
1150: 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e  region..  }..#en
1160: 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f  dif..  #endregio
1170: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
11d0: 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  n Helper Methods
11e0: 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
11f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1200: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
1210: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
1220: 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74 68   some methods th
1230: 61 74 20 61 72 65 20 73 68 61 72 65 64 20 62 65  at are shared be
1240: 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f  tween the..  ///
1250: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
1260: 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20 6f  pre-loader and o
1270: 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a 20  ther classes... 
1280: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1290: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
12a0: 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72 4d  ic class HelperM
12b0: 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20  ethods..  {..   
12c0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
12d0: 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f  te Data..      /
12e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
1300: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
1310: 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20  tect the static 
1320: 3c 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e  <see cref="isMon
1330: 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20  o" /> field...  
1340: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1350: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
1360: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
1370: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
1380: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1390: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
13a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
13f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1400: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
1410: 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72 65  type is only pre
1420: 73 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e  sent when runnin
1430: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
1440: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1450: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1460: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
1470: 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69  string MonoRunti
1480: 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52  meType = "Mono.R
1490: 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20  untime";....    
14a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
14f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
1510: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
1520: 65 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  er we are runnin
1530: 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74  g on Mono.  Init
1540: 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69  ially null, it i
1550: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  s..      /// set
1560: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
1570: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
1580: 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73  thod on its firs
1590: 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20  t call.  Later, 
15a0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73  it..      /// is
15b0: 20 72 65 74 75 72 6e 65 64 20 76 65 72 62 61 74   returned verbat
15c0: 69 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  im by the <see c
15d0: 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20  ref="IsMono" /> 
15e0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f  method...      /
15f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1600: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1610: 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f  tic bool? isMono
1620: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
1630: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1640: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1690: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
16a0: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
16b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
16d0: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
16e0: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
16f0: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
1700: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
1710: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1720: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1730: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1740: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
1750: 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75  s assembly is ru
1760: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
1770: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1780: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
1790: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
17a0: 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20  IsMono()..      
17b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
17c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
17e0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
17f0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1810: 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e         if (isMon
1820: 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  o == null)..    
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1840: 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65    isMono = (Type
1850: 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e  .GetType(MonoRun
1860: 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c  timeType) != nul
1870: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
1880: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1890: 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20  (bool)isMono;.. 
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18c0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
18d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
18f0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
1900: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1910: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1920: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
1930: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1940: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1990: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49  .      #region I
19a0: 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
19b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
19c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
19d0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
19e0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
19f0: 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  s is running on 
1a00: 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64 6f  one of the Windo
1a10: 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73  ws..      /// [s
1a20: 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a  ub-]platforms...
1a30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1a50: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1a60: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68   /// Non-zero wh
1a70: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69  en running on Wi
1a80: 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73 65  ndows; otherwise
1a90: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
1aa0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1ab0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
1ac0: 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64  atic bool IsWind
1ad0: 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ows()..      {..
1ae0: 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66 6f            Platfo
1af0: 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64 20  rmID platformId 
1b00: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53  = Environment.OS
1b10: 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d  Version.Platform
1b20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
1b30: 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d  f ((platformId =
1b40: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
1b50: 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  32S) ||..       
1b60: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
1b70: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
1b80: 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c  .Win32Windows) |
1b90: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
1ba0: 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20   (platformId == 
1bb0: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
1bc0: 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  NT) ||..        
1bd0: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
1be0: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
1bf0: 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20 20  WinCE))..       
1c00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c10: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1c30: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
1c40: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
1c50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1cb0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1cc0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 77   /// This is a w
1cd0: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
1ce0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
1cf0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e 46  e cref="String.F
1d00: 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72 6f  ormat(IFormatPro
1d10: 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a  vider,String,Obj
1d20: 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f  ect[])" /> metho
1d30: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e  d...      /// On
1d40: 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f   Mono, it has to
1d50: 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64   call the method
1d60: 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f 75   overload withou
1d70: 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  t the..      ///
1d80: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f 72   <see cref="IFor
1d90: 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e 20  matProvider" /> 
1da0: 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20 74  parameter, due t
1db0: 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e  o a bug in Mono.
1dc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1de0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1df0: 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 20  rovider">..     
1e00: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73 65   /// This is use
1e10: 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73 70  d for culture-sp
1e20: 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69 6e  ecific formattin
1e30: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
1e40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
1e50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
1e60: 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f  ormat">..      /
1e70: 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74  // The format st
1e80: 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ring...      ///
1e90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ea0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1eb0: 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20 20  ="args">..      
1ec0: 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68 65  /// An array the
1ed0: 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d   objects to form
1ee0: 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  at...      /// <
1ef0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1f00: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1f10: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
1f20: 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20  lting string... 
1f30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1f40: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
1f50: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
1f60: 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  g StringFormat(.
1f70: 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f 72 6d  .          IForm
1f80: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
1f90: 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  der,..          
1fa0: 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a  string format,..
1fb0: 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
1fc0: 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a   object[] args..
1fd0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1fe0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ff0: 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20  if (IsMono()).. 
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2010: 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  urn String.Forma
2020: 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b  t(format, args);
2030: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
2040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2050: 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f  return String.Fo
2060: 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20 66  rmat(provider, f
2070: 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20  ormat, args);.. 
2080: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
2090: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20  ndregion..  }.. 
20a0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
20b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2100: 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69  ..  #region Nati
2110: 76 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70 65  ve Library Helpe
2120: 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c  r Class..  /// <
2130: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
2140: 54 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73  This static clas
2150: 73 20 70 72 6f 76 69 64 65 73 20 61 20 74 68 69  s provides a thi
2160: 6e 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  n wrapper around
2170: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
2180: 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69  ary..  /// loadi
2190: 6e 67 20 66 65 61 74 75 72 65 73 20 6f 66 20 74  ng features of t
21a0: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c  he underlying pl
21b0: 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c  atform...  /// <
21c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74  /summary>..  int
21d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
21e0: 73 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79  ss NativeLibrary
21f0: 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20  Helper..  {..   
2200: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2210: 74 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20 20  te Delegates..  
2220: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2230: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
2240: 73 20 64 65 6c 65 67 61 74 65 20 69 73 20 75 73  s delegate is us
2250: 65 64 20 74 6f 20 77 72 61 70 20 74 68 65 20 63  ed to wrap the c
2260: 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e  oncept of loadin
2270: 67 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  g a native..    
2280: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62    /// library, b
2290: 61 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e  ased on a file n
22a0: 61 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 69  ame, and returni
22b0: 6e 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f  ng the loaded mo
22c0: 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  dule..      /// 
22d0: 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  handle...      /
22e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
22f0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2300: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
2310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2320: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2330: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2340: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
2350: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2360: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2370: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2380: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
2390: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
23a0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
23b0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
23c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
23d0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
23e0: 76 61 74 65 20 64 65 6c 65 67 61 74 65 20 49 6e  vate delegate In
23f0: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
2400: 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
2410: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
2420: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a  Name..      );..
2430: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2440: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2490: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
24a0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
24b0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
24c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
24d0: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
24e0: 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66   load the specif
24f0: 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ied native libra
2500: 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68  ry file using th
2510: 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f  e Win32..      /
2520: 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f  // API...      /
2530: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2540: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2550: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
2560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2570: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2580: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2590: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
25a0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25b0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
25c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
25d0: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
25e0: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
25f0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
2600: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
2610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2620: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2630: 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50  vate static IntP
2640: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69  tr LoadLibraryWi
2650: 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  n32(..          
2660: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
2670: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
2680: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2690: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
26a0: 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32  tiveMethodsWin32
26b0: 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c  .LoadLibrary(fil
26c0: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
26d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
26e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2720: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2730: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2740: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
2750: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2760: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
2770: 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69  o load the speci
2780: 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72  fied native libr
2790: 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74  ary file using t
27a0: 68 65 20 50 4f 53 49 58 0d 0a 20 20 20 20 20 20  he POSIX..      
27b0: 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20  /// API...      
27c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
27d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27e0: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
27f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2800: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
2810: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
2820: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
2830: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2840: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2850: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
2860: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
2870: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
2880: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
2890: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
28a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
28b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
28c0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
28d0: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 50  Ptr LoadLibraryP
28e0: 6f 73 69 78 28 0d 0a 20 20 20 20 20 20 20 20 20  osix(..         
28f0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
2900: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
2910: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2920: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
2930: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
2940: 78 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20 20 20 20  x.dlopen(..     
2950: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
2960: 65 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  e, UnsafeNativeM
2970: 65 74 68 6f 64 73 50 6f 73 69 78 2e 52 54 4c 44  ethodsPosix.RTLD
2980: 5f 44 45 46 41 55 4c 54 29 3b 0d 0a 20 20 20 20  _DEFAULT);..    
2990: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
29a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
29b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
29c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a00: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
2a10: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
2a20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2a30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2a40: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
2a50: 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
2a60: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66  native library f
2a70: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
2a80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2a90: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2aa0: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
2ab0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
2ac0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
2ad0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
2ae0: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
2af0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2b00: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2b10: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2b20: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
2b30: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
2b40: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
2b50: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
2b60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2b70: 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  s>..      public
2b80: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c   static IntPtr L
2b90: 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20 20  oadLibrary(..   
2ba0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
2bb0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
2bc0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
2bd0: 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62 72          LoadLibr
2be0: 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  aryCallback call
2bf0: 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61  back = LoadLibra
2c00: 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20  ryWin32;....#if 
2c10: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2c20: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2c30: 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70 65        if (!Helpe
2c40: 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f  rMethods.IsWindo
2c50: 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ws())..         
2c60: 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20       callback = 
2c70: 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78  LoadLibraryPosix
2c80: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2c90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
2ca0: 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29  llback(fileName)
2cb0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
2cc0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
2cd0: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
2ce0: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
2cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
2d40: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
2d50: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
2d60: 20 43 6c 61 73 73 20 28 50 4f 53 49 58 29 0d 0a   Class (POSIX)..
2d70: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2d80: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2da0: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73  .  /// This clas
2db0: 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76  s declares P/Inv
2dc0: 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63  oke methods to c
2dd0: 61 6c 6c 20 6e 61 74 69 76 65 20 50 4f 53 49 58  all native POSIX
2de0: 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f   APIs...  /// </
2df0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b 53 75 70  summary>..  [Sup
2e00: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
2e10: 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 20 20 69  deSecurity]..  i
2e20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
2e30: 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76  lass UnsafeNativ
2e40: 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 0d 0a 20  eMethodsPosix.. 
2e50: 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f   {..      //////
2e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
2eb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ec0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
2ed0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20  P/Invoke method 
2ee0: 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e  that wraps the n
2ef0: 61 74 69 76 65 20 55 6e 69 78 20 64 6c 6f 70 65  ative Unix dlope
2f00: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  n..      /// fun
2f10: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
2f20: 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74  POSIX documentat
2f30: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
2f40: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
2f50: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
2f60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2f70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2f80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
2f90: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
2fa0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
2fb0: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
2fc0: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
2fd0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2fe0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2ff0: 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20  ame="mode">..   
3000: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74     /// This must
3010: 20 62 65 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f   be a combinatio
3020: 6e 20 6f 66 20 74 68 65 20 69 6e 64 69 76 69 64  n of the individ
3030: 75 61 6c 20 62 69 74 20 66 6c 61 67 73 20 52 54  ual bit flags RT
3040: 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20  LD_LAZY,..      
3050: 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54  /// RTLD_NOW, RT
3060: 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f  LD_GLOBAL, and/o
3070: 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20  r RTLD_LOCAL... 
3080: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3090: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
30a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
30b0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
30c0: 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20  ule handle upon 
30d0: 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74  success -OR- Int
30e0: 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c  Ptr.Zero on fail
30f0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
3100: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3110: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f    [DllImport("__
3120: 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e 74 72 79  Internal", Entry
3130: 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22  Point = "dlopen"
3140: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c  ,..          Cal
3150: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
3160: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
3170: 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
3180: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69  t = CharSet.Ansi
3190: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  ,..          Bes
31a0: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
31b0: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
31c0: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
31d0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65  e,..          Se
31e0: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75  tLastError = tru
31f0: 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  e)]..      inter
3200: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
3210: 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28  n IntPtr dlopen(
3220: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
3230: 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20   int mode);.... 
3240: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
3290: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
32b0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
32c0: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
32d0: 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79  ion calls lazily
32e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
32f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
3300: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
3310: 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78  t RTLD_LAZY = 0x
3320: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  1;....      ////
3330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3380: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3390: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
33a0: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
33b0: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
33c0: 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20   immediately... 
33d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33e0: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
33f0: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
3400: 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d  LD_NOW = 0x2;...
3410: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
3420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3470: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3480: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
3490: 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d  open(), make sym
34a0: 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76  bols globally av
34b0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
34c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34d0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
34e0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c  onst int RTLD_GL
34f0: 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d  OBAL = 0x100;...
3500: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3560: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3570: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
3580: 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65  open(), opposite
3590: 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c   of RTLD_GLOBAL,
35a0: 20 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74   and the default
35b0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
35c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
35d0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
35e0: 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30  t RTLD_LOCAL = 0
35f0: 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  x000;....      /
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3640: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3650: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3660: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
3670: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
3680: 74 68 65 20 64 65 66 61 75 6c 74 73 20 75 73 65  the defaults use
3690: 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e  d by this class.
36a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
36b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
36c0: 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20 69 6e  ternal  const in
36d0: 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d  t RTLD_DEFAULT =
36e0: 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44   RTLD_NOW | RTLD
36f0: 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23  _GLOBAL;..  }..#
3700: 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
3710: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
3720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3760: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
3770: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
3780: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
3790: 61 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e 33  atic Class (Win3
37a0: 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  2)..  /// <summa
37b0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
37c0: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
37d0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
37e0: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 57  to call native W
37f0: 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f  in32 APIs...  //
3800: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
3810: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3820: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3830: 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67  [SuppressUnmanag
3840: 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d  edCodeSecurity].
3850: 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72  .#endif..  inter
3860: 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
3870: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
3880: 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a  hodsWin32..  {..
3890: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
38e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
38f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3900: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
3910: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
3920: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
3930: 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72  e Win32 LoadLibr
3940: 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ary..      /// f
3950: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
3960: 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
3970: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
3980: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
3990: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
39a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
39b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
39c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
39d0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
39e0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
39f0: 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  f the executable
3a00: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
3a10: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
3a20: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3a30: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
3a40: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
3a50: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
3a60: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
3a70: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
3a80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
3a90: 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41  turns>..#if !PLA
3aa0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
3ab0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44  MEWORK..      [D
3ac0: 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c  llImport("kernel
3ad0: 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  32",..#else..   
3ae0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
3af0: 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66  oredll",..#endif
3b00: 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  .. CallingConven
3b10: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
3b20: 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c  nvention.Winapi,
3b30: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
3b40: 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50  et.Auto,..#if !P
3b50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3b60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
3b70: 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69      BestFitMappi
3b80: 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f  ng = false, Thro
3b90: 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61  wOnUnmappableCha
3ba0: 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69  r = true,..#endi
3bb0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74  f..          Set
3bc0: 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65  LastError = true
3bd0: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
3be0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
3bf0: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
3c00: 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  ary(string fileN
3c10: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ame);....      /
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
3c70: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
3c80: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
3c90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3ca0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
3cb0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
3cc0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
3cd0: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
3ce0: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
3cf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
3d00: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
3d10: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
3d20: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
3d30: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
3d40: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
3d50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3d60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
3d70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
3d80: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
3d90: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
3da0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
3db0: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
3dc0: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
3dd0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
3de0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
3df0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72   [DllImport("cor
3e00: 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  edll", CallingCo
3e10: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
3e20: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e  ngConvention.Win
3e30: 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  api)]..      int
3e40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3e50: 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74  ern void GetSyst
3e60: 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45  emInfo(out SYSTE
3e70: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
3e80: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  o);....      ///
3e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ed0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3ee0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3ef0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d     /// This enum
3f00: 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73  eration contains
3f10: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
3f20: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f  lues for the pro
3f30: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
3f40: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  / architecture f
3f50: 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74  ield of the syst
3f60: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
3f70: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
3f80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3f90: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
3fa0: 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72  enum ProcessorAr
3fb0: 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68  chitecture : ush
3fc0: 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57  ort /* COMPAT: W
3fd0: 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  in32. */..      
3fe0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74  {..          Int
3ff0: 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20  el = 0,..       
4000: 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20     MIPS = 1,..  
4010: 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20          Alpha = 
4020: 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f  2,..          Po
4030: 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20  werPC = 3,..    
4040: 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a        SHx = 4,..
4050: 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20            ARM = 
4060: 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41  5,..          IA
4070: 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20  64 = 6,..       
4080: 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d     Alpha64 = 7,.
4090: 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20  .          MSIL 
40a0: 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 8,..          
40b0: 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20  AMD64 = 9,..    
40c0: 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69        IA32_on_Wi
40d0: 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20  n64 = 10,..     
40e0: 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
40f0: 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a  xFFFF..      }..
4100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4150: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
4160: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4170: 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65  / This structure
4180: 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d   contains inform
4190: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
41a0: 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72  current computer
41b0: 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f  . This..      //
41c0: 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70  / includes the p
41d0: 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70  rocessor type, p
41e0: 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79  age size, memory
41f0: 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e   addresses, etc.
4200: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4210: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53  mmary>..      [S
4220: 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
4230: 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
4240: 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  l)]..      inter
4250: 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53 54 45  nal struct SYSTE
4260: 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d  M_INFO..      {.
4270: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
4280: 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  c ProcessorArchi
4290: 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73 73  tecture wProcess
42a0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
42b0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
42c0: 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72 76  c ushort wReserv
42d0: 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ed; /* NOT USED 
42e0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
42f0: 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67 65  blic uint dwPage
4300: 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Size; /* NOT USE
4310: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
4320: 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70  public IntPtr lp
4330: 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69  MinimumApplicati
4340: 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f  onAddress; /* NO
4350: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
4360: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
4370: 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c  tr lpMaximumAppl
4380: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
4390: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
43a0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
43b0: 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72   uint dwActivePr
43c0: 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20  ocessorMask; /* 
43d0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
43e0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
43f0: 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f  nt dwNumberOfPro
4400: 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20  cessors; /* NOT 
4410: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
4420: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
4430: 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20  wProcessorType; 
4440: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
4450: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4460: 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69   uint dwAllocati
4470: 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f  onGranularity; /
4480: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4490: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
44a0: 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f  ushort wProcesso
44b0: 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55  rLevel; /* NOT U
44c0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
44d0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
44e0: 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69  wProcessorRevisi
44f0: 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  on; /* NOT USED 
4500: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  */..      }..#en
4510: 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64  dif..  }..  #end
4520: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
4530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
4580: 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64  region Unmanaged
4590: 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73   Interop Methods
45a0: 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 53   Static Class (S
45b0: 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73  QLite)..  /// <s
45c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
45d0: 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72  his class declar
45e0: 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  es P/Invoke meth
45f0: 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69  ods to call nati
4600: 76 65 20 53 51 4c 69 74 65 20 41 50 49 73 2e 0d  ve SQLite APIs..
4610: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
4620: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
4630: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4640: 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  K..  [SuppressUn
4650: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
4660: 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ity]..#endif..  
4670: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4680: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
4690: 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a  veMethods..  {..
46a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 68        #region Sh
46b0: 61 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c 69  ared Native SQLi
46c0: 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c  te Library Pre-L
46d0: 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20  oading Code..   
46e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
46f0: 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
4700: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4710: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
4720: 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20   file extension 
4730: 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69 63  used for dynamic
4740: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73 2e   link libraries.
4750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4760: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
4770: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
4780: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c  donly string Dll
4790: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20  FileExtension = 
47a0: 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20  ".dll";....     
47b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
47c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
4800: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4810: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
4820: 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73  ile extension us
4830: 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20 63  ed for the XML c
4840: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
4850: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
4860: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4870: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
4880: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 43  eadonly string C
4890: 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69  onfigFileExtensi
48a0: 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b 0d  on = ".config";.
48b0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4900: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
4910: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4920: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6e  // This is the n
4930: 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
4940: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
4950: 65 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68  e specific to th
4960: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79 73  e..      /// Sys
4970: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
4980: 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
4990: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
49a0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
49b0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
49c0: 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46  tring XmlConfigF
49d0: 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20  ileName =..     
49e0: 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61       typeof(Unsa
49f0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29  feNativeMethods)
4a00: 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c 6c  .Namespace + Dll
4a10: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b 0d  FileExtension +.
4a20: 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69  .          Confi
4a30: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d  gFileExtension;.
4a40: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
4a50: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
4a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4aa0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
4ab0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
4ac0: 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ta..      /// <s
4ad0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4ae0: 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20  // This lock is 
4af0: 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20  used to protect 
4b00: 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69  the static _SQLi
4b10: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  teNativeModuleFi
4b20: 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 2f  leName,..      /
4b30: 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  // _SQLiteNative
4b40: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61 6e  ModuleHandle, an
4b50: 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  d processorArchi
4b60: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
4b70: 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20   fields...      
4b80: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4b90: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
4ba0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62  atic readonly ob
4bb0: 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63 52  ject staticSyncR
4bc0: 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
4bd0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ();....      ///
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c20: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
4c30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4c40: 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74     /// This dict
4c50: 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68  ionary stores th
4c60: 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65  e mappings betwe
4c70: 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  en processor arc
4c80: 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20  hitecture..     
4c90: 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20 70   /// names and p
4ca0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20 20  latform names.  
4cb0: 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20 61  These mappings a
4cc0: 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72 20  re now used for 
4cd0: 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  two..      /// p
4ce0: 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74 2c  urposes.  First,
4cf0: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74   they are used t
4d00: 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74  o determine if t
4d10: 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65  he assembly code
4d20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65  ..      /// base
4d30: 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
4d40: 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6c  instead of the l
4d50: 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20 75  ocation, based u
4d60: 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65 0d  pon whether one.
4d70: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f  .      /// or mo
4d80: 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64 20  re of the named 
4d90: 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20  sub-directories 
4da0: 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68 65  exist within the
4db0: 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a   assembly code..
4dc0: 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e 20        /// base. 
4dd0: 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61 72   Second, they ar
4de0: 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73 74  e used to assist
4df0: 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65 20   in loading the 
4e00: 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20  appropriate..   
4e10: 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6e     /// SQLite in
4e20: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69  terop assembly i
4e30: 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20  nto the current 
4e40: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
4e50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4e60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
4e70: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
4e80: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
4e90: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
4ea0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b 0d  cturePlatforms;.
4eb0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
4ec0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f10: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4f20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4f30: 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68   /// For now, th
4f40: 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79  is method simply
4f50: 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69   calls the Initi
4f60: 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20  alize method... 
4f70: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4f80: 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69  ry>..      stati
4f90: 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  c UnsafeNativeMe
4fa0: 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b  thods()..      {
4fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74  ..          Init
4fc0: 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20  ialize();..     
4fd0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
4fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5020: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5030: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5040: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
5050: 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69  o initialize thi
5060: 73 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c  s class by pre-l
5070: 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76  oading the nativ
5080: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
5090: 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20  /// library for 
50a0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
50b0: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
50c0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
50d0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
50e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
50f0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5100: 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28  void Initialize(
5110: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  )..      {..#if 
5120: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
5130: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
5140: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
5150: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
5160: 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
5170: 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
5180: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5190: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
51a0: 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64   the "No_PreLoad
51b0: 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d  SQLite" environm
51c0: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
51d0: 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20  set (to..       
51e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74     //       anyt
51f0: 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20  hing), skip all 
5200: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
5210: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
5220: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
5230: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
5240: 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
5250: 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69  ("No_PreLoadSQLi
5260: 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  te", null) != nu
5270: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5280: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64     return;..#end
5290: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  if..#endif....  
52a0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
52b0: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
52c0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
52d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
52e0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
52f0: 65 61 74 65 20 74 68 65 20 6c 69 73 74 20 6f 66  eate the list of
5300: 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61 74   statistics that
5310: 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68   will contain th
5320: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
5330: 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20        number of 
5340: 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69  times each setti
5350: 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65 65  ng value has bee
5360: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
5370: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5380: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74 69   DebugData.Initi
5390: 61 6c 69 7a 65 53 65 74 74 69 6e 67 52 65 61 64  alizeSettingRead
53a0: 43 6f 75 6e 74 73 28 29 3b 0d 0a 23 65 6e 64 69  Counts();..#endi
53b0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
53c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
53d0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
53e0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
53f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5400: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5410: 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f           // TODO
5420: 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73  : Make sure this
5430: 20 6c 69 73 74 20 69 73 20 75 70 64 61 74 65 64   list is updated
5440: 20 69 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   if the supporte
5450: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
5460: 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
5470: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
5480: 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c   names and/or pl
5490: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20  atform names..  
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
54b0: 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20       changes... 
54c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
54d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
54e0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
54f0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
5500: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
5510: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5530: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5540: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
5550: 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20  eate the map of 
5560: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
5570: 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20  ecture names..  
5580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5590: 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74  //       to plat
55a0: 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67  form names using
55b0: 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74   a case-insensit
55c0: 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  ive string..    
55d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
55e0: 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e         comparer.
55f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5600: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5610: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
5620: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
5630: 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20  latforms =..    
5640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5650: 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79    new Dictionary
5660: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
5670: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
5690: 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69  ingComparer.Ordi
56a0: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
56b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
56c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
56d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
56e0: 54 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69  TE: Setup the li
56f0: 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e  st of platform n
5700: 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ames associated 
5710: 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  with..          
5720: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5730: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 70   the supported p
5740: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
5750: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
5760: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5780: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5790: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
57a0: 41 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33  Add("x86", "Win3
57b0: 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  2");..          
57c0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
57d0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
57e0: 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36  tforms.Add("AMD6
57f0: 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20  4", "x64");..   
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
5810: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
5820: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
5830: 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69  d("IA64", "Itani
5840: 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  um");..         
5850: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
5860: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
5870: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d  atforms.Add("ARM
5880: 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20  ", "WinCE");..  
5890: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
58a0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
58b0: 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45  DARD || USE_INTE
58c0: 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46  ROP_DLL || PLATF
58d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
58e0: 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41  WORK..#if PRELOA
58f0: 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
5900: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5910: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5920: 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61    // BUGBUG: Wha
5930: 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70  t about other ap
5940: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
5950: 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s?..            
5960: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5970: 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e      if (_SQLiteN
5980: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
5990: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
59a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
59b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
59c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73        string bas
59d0: 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c  eDirectory = nul
59e0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
59f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
5a00: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
5a10: 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  re = null;....  
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a30: 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20  /* IGNORED */.. 
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
5a60: 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
5a80: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72  baseDirectory, r
5a90: 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ef processorArch
5aa0: 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ac0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5ad0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
5ae0: 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f  ttempt to pre-lo
5af0: 61 64 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ad the SQLite co
5b00: 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a  re library (or..
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72    //       inter
5b30: 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61 6e 64  op assembly) and
5b40: 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68 65 20   store both the 
5b50: 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  file name..     
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5b70: 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69 76 65        and native
5b80: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
5b90: 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65 2e 0d  or later usage..
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5bb0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5bc0: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
5bd0: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
5be0: 20 20 20 20 20 20 20 20 20 20 50 72 65 4c 6f 61            PreLoa
5bf0: 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20  dSQLiteDll(..   
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
5c20: 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  , processorArchi
5c30: 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  tecture,..      
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c50: 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ref _SQLiteNativ
5c60: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
5c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c80: 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c          ref _SQL
5c90: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
5ca0: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
5cb0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
5cc0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
5cd0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
5ce0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
5d40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5d50: 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70  / Combines two p
5d60: 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  ath strings...  
5d70: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5d80: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
5d90: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31  aram name="path1
5da0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
5db0: 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52  e first path -OR
5dc0: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
5dd0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
5de0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5df0: 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20  me="path2">..   
5e00: 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e     /// The secon
5e10: 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c  d path -OR- null
5e20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5e30: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5e40: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5e50: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e    /// The combin
5e60: 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d  ed path string -
5e70: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68  OR- null if both
5e80: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
5e90: 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   path..      ///
5ea0: 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c   strings are nul
5eb0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
5ec0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5ed0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
5ee0: 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69  tring MaybeCombi
5ef0: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
5f00: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c     string path1,
5f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
5f20: 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20  ng path2..      
5f30: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
5f40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
5f50: 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th1 != null)..  
5f60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
5f80: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5fa0: 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69  eturn Path.Combi
5fb0: 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32 29  ne(path1, path2)
5fc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5fd0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
5fe0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5ff0: 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20  path1;..        
6000: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
6010: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  lse..          {
6020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6030: 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c  if (path2 != nul
6040: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6050: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
6060: 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h2;..           
6070: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
6080: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6090: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
60a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
60b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6110: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6120: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
6130: 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e  urns the XML con
6140: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
6150: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73  name for the ass
6160: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  embly..      ///
6170: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
6180: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
6190: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
61a0: 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  nents...      //
61b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
61c0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
61d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
61e0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
61f0: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52  on file name -OR
6200: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
6210: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
6220: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  d..      /// or 
6230: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d  does not exist..
6240: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
6250: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
6260: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
6270: 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  ng GetXmlConfigF
6280: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
6290: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74   {..          st
62a0: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d  ring directory;.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
62c0: 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23  g fileName;....#
62d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
62e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
62f0: 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f           directo
6300: 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43  ry = AppDomain.C
6310: 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73  urrentDomain.Bas
6320: 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20  eDirectory;..   
6330: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
6340: 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
6350: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d  th(directory, Xm
6360: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
6370: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
6380: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
6390: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
63a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
63b0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e 64 69  fileName;..#endi
63c0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 64  f....          d
63d0: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73  irectory = GetAs
63e0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
63f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69  );..          fi
6400: 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f  leName = MaybeCo
6410: 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74  mbinePath(direct
6420: 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
6430: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
6440: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
6450: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
6460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6470: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
6480: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
6490: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
64a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64f0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6500: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6510: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
6520: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76  nd returns the v
6530: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63  alue of the spec
6540: 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75  ified setting, u
6550: 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20  sing the XML..  
6560: 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
6570: 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f  ation file and/o
6580: 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  r the environmen
6590: 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20  t variables for 
65a0: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
65b0: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61     /// process a
65c0: 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e  nd/or the curren
65d0: 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61  t system, when a
65e0: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
65f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6600: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
6610: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
6620: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
6630: 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  me of the settin
6640: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
6650: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6660: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
6670: 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20  efault">..      
6680: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
6690: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
66a0: 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20  the setting has 
66b0: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
66c0: 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f  licitly..      /
66d0: 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20  // or cannot be 
66e0: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
66f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6700: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
6710: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
6720: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
6730: 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68   setting -OR- th
6740: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
6750: 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20  specified by..  
6760: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
6770: 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  f name="default"
6780: 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f   /> if it has no
6790: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
67a0: 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20  citly or..      
67b0: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
67c0: 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65  termined.  By de
67d0: 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72  fault, all refer
67e0: 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e  ences to existin
67f0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  g..      /// env
6800: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
6810: 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e  es will be expan
6820: 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72  ded to their cor
6830: 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65  responding value
6840: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  s..      /// wit
6850: 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f  hin the value to
6860: 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c   be returned unl
6870: 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22  ess either the "
6880: 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20  No_Expand" or.. 
6890: 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70       /// "No_Exp
68a0: 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61  and_<paramref na
68b0: 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e  me="name" />" en
68c0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
68d0: 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20  le is set [to.. 
68e0: 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e       /// anythin
68f0: 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  g]...      /// <
6900: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
6910: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6920: 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69   string GetSetti
6930: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
6940: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
6950: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
6960: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
6970: 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f  default /* in */
6980: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
6990: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
69a0: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
69b0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
69c0: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
69d0: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
69e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6a30: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
6a40: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
6a50: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
6a60: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
6a70: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
6a80: 64 43 6f 75 6e 74 28 6e 61 6d 65 29 3b 0d 0a 23  dCount(name);..#
6a90: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
6aa0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
6ab0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6b10: 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b  ng value = null;
6b20: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
6b30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
6b40: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  RK..          bo
6b50: 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74 72 75 65  ol expand = true
6b60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
6b70: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
6b80: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
6b90: 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64  iable("No_Expand
6ba0: 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ") != null)..   
6bb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6bc0: 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d          expand =
6bd0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
6be0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
6bf0: 65 6c 73 65 20 69 66 20 28 45 6e 76 69 72 6f 6e  else if (Environ
6c00: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
6c10: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c30: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
6c40: 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75  ringFormat(Cultu
6c50: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
6c60: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
6c70: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f              "No_
6c80: 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d  Expand_{0}", nam
6c90: 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  e)) != null)..  
6ca0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6cb0: 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20           expand 
6cc0: 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
6cd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6ce0: 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72     value = Envir
6cf0: 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
6d00: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61  nmentVariable(na
6d10: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
6d20: 20 20 69 66 20 28 65 78 70 61 6e 64 20 26 26 20    if (expand && 
6d30: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
6d40: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
6d60: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
6d70: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
6d80: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
6d90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
6da0: 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
6db0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6dc0: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
6dd0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
6de0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
6df0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6e00: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
6e10: 65 4e 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43 6f  eName = GetXmlCo
6e20: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d  nfigFileName();.
6e30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6e40: 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d 3d   if (fileName ==
6e50: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6e60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6e70: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20   @default;....  
6e80: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44              XmlD
6e90: 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74  ocument document
6ea0: 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65   = new XmlDocume
6eb0: 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt();....       
6ec0: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
6ed0: 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  Load(fileName);.
6ee0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6ef0: 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d   XmlElement elem
6f00: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53  ent = document.S
6f10: 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
6f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6f30: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
6f40: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
6f50: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
6f60: 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f80: 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
6f90: 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
6fa0: 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
6fb0: 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
6fc0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
6fd0: 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ement;....      
6fe0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
6ff0: 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent != null)..  
7000: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7020: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73   if (element.Has
7030: 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65  Attribute("value
7040: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
7050: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
7060: 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74   = element.GetAt
7070: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
7080: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7090: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
70a0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
70b0: 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
70c0: 64 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e  d && !String.IsN
70d0: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
70e0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
70f0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
7100: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
7110: 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
7120: 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
7130: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
7140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7150: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
7160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7170: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
7180: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
7190: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
71a0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
71b0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
71c0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
71d0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
71e0: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
71f0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
7200: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
7210: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
7220: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
7230: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
7240: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
7250: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
7260: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7270: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
7280: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
7290: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
72a0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
72b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72c0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
72d0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
72e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72f0: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
7300: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
7310: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
7320: 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7340: 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b  \"{0}\" value: {
7350: 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20  1}", name, e)); 
7360: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
7370: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7380: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
7390: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
73a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
73b0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
73c0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
73d0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
73e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
73f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
7400: 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
7410: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
7420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
7470: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7480: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72  MEWORK..      pr
7490: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
74a0: 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67  ing ListToString
74b0: 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c  (IList<string> l
74c0: 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ist)..      {.. 
74d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73           if (lis
74e0: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
74f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7500: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
7510: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
7520: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
7530: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
7540: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
7550: 65 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65  each (string ele
7560: 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20  ment in list).. 
7570: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7580: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
7590: 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ement == null)..
75a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75b0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
75c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
75d0: 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e  (result.Length >
75e0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
75f0: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
7600: 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20  pend(' ');....  
7610: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
7620: 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e  lt.Append(elemen
7630: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  t);..          }
7640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
7650: 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74  turn result.ToSt
7660: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ring();..      }
7670: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
7680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
76d0: 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
76e0: 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
76f0: 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
7700: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
7710: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
7720: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c  .          ref L
7730: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
7740: 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  hes..          )
7750: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7760: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
7770: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
7780: 20 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d    if (matches ==
7790: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
77a0: 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20        matches = 
77b0: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
77c0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
77d0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
77e0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
77f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7800: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
7810: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
7820: 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20  ectory) &&..    
7830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
7840: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7850: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d  turePlatforms !=
7860: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
7870: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7880: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
7890: 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69  ach (KeyValuePai
78a0: 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  r<string, string
78b0: 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20  > pair..        
78c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78d0: 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72      in processor
78e0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
78f0: 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20  forms)..        
7900: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7920: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
7930: 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
7940: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
7950: 72 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d  ry, pair.Key))).
7960: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7970: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7990: 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28      matches.Add(
79a0: 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20  pair.Key);..    
79b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79c0: 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d        result++;.
79d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
79e0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
79f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a00: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d    string value =
7a10: 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a   pair.Value;....
7a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a30: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
7a40: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
7a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a60: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
7a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a80: 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63         if (Direc
7a90: 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62  tory.Exists(Mayb
7aa0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
7ab0: 65 63 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29  ectory, value)))
7ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ad0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7af0: 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64       matches.Add
7b00: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b20: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
7b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7b50: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7b60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7b70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7b80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
7b90: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  sult;..      }..
7ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
7bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
7c00: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43  te static bool C
7c10: 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65  heckAssemblyCode
7c20: 42 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Base(..         
7c30: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
7c40: 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ly,..          r
7c50: 65 66 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  ef string fileNa
7c60: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  me..          ).
7c70: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
7c80: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
7c90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7ca0: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
7cb0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7cd0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
7cf0: 6e 67 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73  ng codeBase = as
7d00: 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b  sembly.CodeBase;
7d10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7d20: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
7d30: 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42  ullOrEmpty(codeB
7d40: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
7d50: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7d60: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
7d70: 20 20 20 20 20 20 20 20 55 72 69 20 75 72 69 20          Uri uri 
7d80: 3d 20 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61  = new Uri(codeBa
7d90: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
7da0: 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c      string local
7db0: 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c  FileName = uri.L
7dc0: 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20  ocalPath;....   
7dd0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7de0: 46 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61  File.Exists(loca
7df0: 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  lFileName))..   
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7e10: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
7e30: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
7e40: 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
7e50: 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  ryName(..       
7e60: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c             local
7e70: 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  FileName); /* th
7e80: 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
7e90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 78          string x
7ea0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
7eb0: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
7ec0: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
7ed0: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
7ee0: 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  y, XmlConfigFile
7ef0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
7f00: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
7f10: 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69  .Exists(xmlConfi
7f20: 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  gFileName))..   
7f30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
7f40: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
7f50: 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43  0 && TRACE_DETEC
7f60: 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20  TION..          
7f70: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
7f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
7f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7fa0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
7fb0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
7fc0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
7fd0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
7fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
7ff0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
8000: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
8010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8020: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8030: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8040: 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69   found XML confi
8050: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20  guration file " 
8060: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
8070: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69               "vi
8080: 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20  a code base for 
8090: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
80a0: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22  ing assembly: \"
80b0: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
80c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80d0: 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65     xmlConfigFile
80e0: 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  Name)); /* throw
80f0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
8100: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8110: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
8120: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8130: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8150: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8190: 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46  ileName = localF
81a0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
81b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
81c0: 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
81d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
81e0: 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c             List<
81f0: 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20  string> matches 
8200: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
8210: 20 20 20 20 20 20 20 20 20 69 66 20 28 43 68 65           if (Che
8220: 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72  ckForArchitectur
8230: 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64  esAndPlatforms(d
8240: 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61  irectory, ref ma
8250: 74 63 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20  tches) > 0)..   
8260: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
8270: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
8280: 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43  0 && TRACE_DETEC
8290: 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20  TION..          
82a0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
82c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
82d0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
82e0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
82f0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
8300: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
8310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
8320: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
8330: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8360: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8370: 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75   found native su
8380: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 22 20  b-directories " 
8390: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69               "vi
83b0: 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20  a code base for 
83c0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
83d0: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22  ing assembly: \"
83e0: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
83f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8400: 20 20 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28     ListToString(
8410: 6d 61 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74  matches))); /* t
8420: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
8430: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
8460: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8480: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
8490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
84a0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
84b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84c0: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
84d0: 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84f0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
8500: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
8510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
8520: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
8530: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
8540: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8550: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
8560: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
8570: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
8580: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
8590: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
85a0: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
85b0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
85c0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
85d0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
85e0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8610: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
8620: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
8630: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
8640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8650: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
8660: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
8670: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8680: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
8690: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
86a0: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68  der failed to ch
86b0: 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20  eck code base " 
86c0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
86d0: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
86e0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
86f0: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
8700: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
8710: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
8720: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8730: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
8740: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8750: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8760: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
8770: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
8780: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8790: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
87a0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
87b0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
87c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
87d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8810: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8820: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8830: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
8840: 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f  urns the directo
8850: 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
8860: 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
8870: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
8880: 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20  xecuted...      
8890: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
88a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
88b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
88c0: 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  he directory for
88d0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
88e0: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
88f0: 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c  ecuted -OR- null
8900: 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   if..      /// i
8910: 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
8920: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
8930: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
8940: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
8950: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73  tic string GetAs
8960: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
8970: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
8980: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8990: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
89a0: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
89b0: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
89c0: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
89d0: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
89f0: 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
8a00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8a10: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
8a20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8a30: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
8a40: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  me = null;....#i
8a50: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
8a60: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8a70: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
8a80: 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79  blyName assembly
8a90: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Name = assembly.
8aa0: 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  GetName();....  
8ab0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8ac0: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  assemblyName == 
8ad0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8ae0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8af0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
8b00: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
8b10: 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  = assemblyName.C
8b20: 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d  odeBase;..#else.
8b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
8b40: 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c  f (!CheckAssembl
8b50: 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62  yCodeBase(assemb
8b60: 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65  ly, ref fileName
8b70: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
8b80: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
8b90: 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69   assembly.Locati
8ba0: 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
8bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8bc0: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
8bd0: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
8be0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8bf0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
8c00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8c10: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
8c20: 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
8c30: 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e  ectoryName(fileN
8c40: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
8c50: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
8c60: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
8c70: 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20  directory))..   
8c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8c90: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
8ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
8cb0: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
8cc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
8cd0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
8ce0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
8cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
8d00: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
8d10: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
8d20: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
8d30: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
8d40: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
8d50: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
8d60: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
8d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8da0: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
8db0: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
8dc0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
8dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8de0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
8df0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
8e00: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
8e10: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
8e20: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
8e30: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
8e40: 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22 20  get directory " 
8e50: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
8e60: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
8e70: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
8e80: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
8e90: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
8ea0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
8eb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8ec0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
8ed0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8ef0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
8f00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
8f10: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8f20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
8f30: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
8f40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
8f50: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8fb0: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
8fc0: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
8fd0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
8fe0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
8ff0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
9000: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
9010: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
9020: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
9030: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
9040: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
9050: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
9060: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
9070: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
9080: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
9090: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
90a0: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
90b0: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
90c0: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
90d0: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
90e0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
90f0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
9100: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
9110: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
9120: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
9130: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
9140: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
9150: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
9160: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
9170: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
9180: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
9190: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
91a0: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
91b0: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
91c0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
91d0: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
91e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
91f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9200: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
9210: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
9220: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
9230: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
9240: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
9250: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
9260: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
9270: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
9280: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
9290: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
92a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
92b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
92c0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
92d0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
92e0: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
92f0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
9300: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
9310: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
9320: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
9330: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9340: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9350: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
9360: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
9370: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
9380: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
9390: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
93a0: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
93b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9400: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
9410: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
9420: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9430: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
9440: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
9450: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
9460: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
9470: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
9480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9490: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
94a0: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
94b0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
94c0: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
94d0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
94e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9530: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9540: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
9550: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
9560: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
9570: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
9580: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
9590: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
95a0: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
95b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
95c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
95d0: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
95e0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
95f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
9600: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
9610: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9670: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9680: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
9690: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
96a0: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
96b0: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
96c0: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
96d0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
96e0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
96f0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
9700: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
9710: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9720: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9730: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
9740: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
9750: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
9760: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
9770: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
9780: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
9790: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
97a0: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
97b0: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
97c0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
97d0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
97e0: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
97f0: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
9800: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
9810: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
9820: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
9830: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
9840: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
9850: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
9860: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
9870: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
9880: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
9890: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
98a0: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
98b0: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
98c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
98d0: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
98e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
98f0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
9900: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
9910: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
9970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9980: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
9990: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
99a0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
99b0: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
99c0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
99d0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
99e0: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
99f0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
9a00: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
9a10: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
9a20: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
9a30: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
9a40: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
9a50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9a60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9a70: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
9a80: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
9a90: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
9aa0: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
9ab0: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
9ac0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
9ad0: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
9ae0: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
9af0: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
9b00: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
9b10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
9b20: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
9b30: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
9b40: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9b50: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
9b60: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
9b70: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
9b80: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
9b90: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
9ba0: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
9bb0: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
9bc0: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
9bd0: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
9be0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
9bf0: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
9c00: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
9c10: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
9c20: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
9c30: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
9c40: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
9c50: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
9c60: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
9c70: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
9c80: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
9c90: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
9ca0: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
9cb0: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
9cc0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
9cd0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9ce0: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
9cf0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
9d00: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
9d10: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
9d20: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
9d30: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
9d40: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
9d50: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9d60: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
9d70: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
9d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9d90: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
9da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9db0: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
9dc0: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
9dd0: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
9de0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
9df0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9e00: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
9e10: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
9e20: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
9e30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9e40: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9e50: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
9e60: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
9e70: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
9e80: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
9e90: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9ea0: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
9eb0: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
9ec0: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
9ed0: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
9ee0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9ef0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
9f00: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
9f10: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
9f20: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
9f30: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
9f40: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9f60: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
9f70: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9f80: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9f90: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
9fa0: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
9fb0: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
9fc0: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
9fd0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
9fe0: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
9ff0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
a000: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
a010: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
a020: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
a030: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
a040: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
a050: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
a060: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
a070: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
a080: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
a090: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a0a0: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
a0b0: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
a0c0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
a0d0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
a0e0: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
a0f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a100: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
a110: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
a120: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
a130: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
a140: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
a150: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
a160: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
a170: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
a180: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
a190: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
a1a0: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
a1b0: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
a1c0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
a1d0: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
a1e0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
a1f0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
a200: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a210: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
a220: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
a230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a240: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
a250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
a260: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
a270: 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
a280: 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
a2a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2b0: 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
a2c0: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
a2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2e0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
a2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a300: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
a310: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
a320: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
a330: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
a340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
a350: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
a360: 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
a370: 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
a380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a390: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
a3a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a3b0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a3c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
a3d0: 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
a3e0: 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
a3f0: 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
a400: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
a410: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a420: 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
a430: 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
a440: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
a450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a460: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
a470: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
a480: 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
a490: 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a4b0: 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
a4c0: 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
a4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
a4e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a4f0: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
a500: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
a510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a520: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a530: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
a540: 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
a550: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
a560: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
a570: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
a580: 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
a590: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
a5a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a5b0: 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a  true; /* FOUND *
a5c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a5d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a5e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a5f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a600: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
a610: 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d  /* NOT FOUND */.
a620: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
a630: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
a680: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a690: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
a6a0: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
a6b0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
a6c0: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
a6d0: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
a6e0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
a6f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a700: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a710: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
a720: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
a730: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
a740: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
a750: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
a760: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
a770: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
a780: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
a790: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
a7a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
a7b0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
a7c0: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
a7d0: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
a7e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a7f0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
a800: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
a810: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
a820: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
a830: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
a840: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
a850: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
a860: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
a870: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
a880: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a890: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
a8a0: 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74  ectory = GetSett
a8b0: 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61  ingValue("PreLoa
a8c0: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
a8d0: 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20  ctory",..       
a8e0: 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d         null);...
a8f0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64  .          if (d
a900: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
a910: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a920: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
a930: 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  y;....#if !PLATF
a940: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a950: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
a960: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
a970: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
a980: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
a990: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
a9a0: 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  y" environment..
a9b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a9c0: 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
a9d0: 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29  et (to anything)
a9e0: 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74  , then attempt t
a9f0: 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  o use the..     
aa00: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69       //       di
aa10: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
aa20: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  ng the currently
aa30: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
aa40: 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  bly..          /
aa50: 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79  /       (i.e. Sy
aa60: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
aa70: 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65  ) intsead of the
aa80: 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
aa90: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
aaa0: 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72   domain base dir
aab0: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20  ectory...       
aac0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
aad0: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
aae0: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
aaf0: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
ab00: 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d  dSQLite_UseAssem
ab10: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  blyDirectory", n
ab20: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
ab30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ab40: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
ab50: 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c  ory = GetAssembl
ab60: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  yDirectory();...
ab70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
ab80: 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20  f (directory != 
ab90: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
aba0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
abb0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
abc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
abd0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
abe0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
abf0: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
ac00: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73  on using the bas
ac10: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
ac20: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
ac30: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61         current a
ac40: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
ac50: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
ac60: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
ac70: 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72  rn AppDomain.Cur
ac80: 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
ac90: 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65  irectory;..#else
aca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
acb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
acc0: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
acd0: 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
ace0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
acf0: 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
ad00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
ad10: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
ad20: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  ting assembly...
ad30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ad40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
ad50: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
ad60: 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory();..#endif..
ad70: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ad80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
add0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ade0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
adf0: 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e  mines if the dyn
ae00: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
ae10: 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75  y file name requ
ae20: 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20  ires a suffix.. 
ae30: 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64       /// and add
ae40: 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72  s it if necessar
ae50: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
ae60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ae70: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ae80: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
ae90: 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
aea0: 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  nal dynamic link
aeb0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
aec0: 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  me to inspect...
aed0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
aee0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
aef0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
af00: 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c  // The dynamic l
af10: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
af20: 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20   name, possibly 
af30: 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c  modified to incl
af40: 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f  ude an..      //
af50: 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20  / extension...  
af60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
af70: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
af80: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
af90: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
afa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
afb0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20  ing fileName /* 
afc0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
afd0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
afe0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
aff0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
b000: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
b010: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b020: 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70          if (Help
b030: 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
b040: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
b050: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b060: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
b070: 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74  fileName.EndsWit
b080: 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  h(DllFileExtensi
b090: 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
b0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
b0b0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
b0c0: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
b0d0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
b0e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b100: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20  return fileName 
b110: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
b120: 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
b130: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b140: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
b150: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b160: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
b170: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ame;..      }...
b180: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
b190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
b1e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b1f0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
b200: 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73  urns the process
b210: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
b220: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  of the current..
b230: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
b240: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
b250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b260: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
b270: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
b280: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
b290: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
b2a0: 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20  nt process -OR- 
b2b0: 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
b2c0: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
b2d0: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
b2e0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
b2f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
b300: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
b310: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
b320: 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20  tecture()..     
b330: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
b340: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
b350: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
b360: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
b370: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
b380: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
b390: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b3a0: 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
b3b0: 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
b3c0: 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  im for the curre
b3d0: 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  nt processor..  
b3e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b3f0: 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
b400: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b410: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
b420: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b430: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
b440: 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
b450: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
b460: 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41  QLite_ProcessorA
b470: 72 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75  rchitecture", nu
b480: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
b490: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
b4a0: 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e  rchitecture != n
b4b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
b4c0: 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
b4d0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
b4e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
b4f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
b500: 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69  BUGBUG: Will thi
b510: 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69  s always be reli
b520: 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20  able?..         
b530: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   //..          p
b540: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b550: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
b560: 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52  gValue(PROCESSOR
b570: 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e  _ARCHITECTURE, n
b580: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
b590: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
b5e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
b5f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
b600: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b610: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65      // HACK: Che
b620: 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73  ck for an "impos
b630: 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e  sible" situation
b640: 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65  .  If the pointe
b650: 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  r size..        
b660: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32    //       is 32
b670: 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65  -bits, the proce
b680: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
b690: 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44  e cannot be "AMD
b6a0: 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  64"...          
b6b0: 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74  //       In that
b6c0: 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c   case, we are al
b6d0: 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68  most certainly h
b6e0: 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20  itting a bug in 
b6f0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
b700: 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
b710: 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20  g system and/or 
b720: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
b730: 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20  at causes the.. 
b740: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b750: 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48    PROCESSOR_ARCH
b760: 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e  ITECTURE environ
b770: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
b780: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
b790: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b7a0: 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20   wrong value in 
b7b0: 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63  some circumstanc
b7c0: 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65  es.  Please refe
b7d0: 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20  r to ticket..   
b7e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
b7f0: 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72  [9ac9862611] for
b800: 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
b810: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
b820: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
b830: 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  f ((IntPtr.Size 
b840: 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20  == sizeof(int)) 
b850: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
b860: 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28    String.Equals(
b870: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
b880: 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d  cture, "AMD64",.
b890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b8a0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
b8b0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
b8c0: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
b8d0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
b8e0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
b8f0: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
b900: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
b910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b920: 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63   NOTE: When trac
b930: 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ing is enabled, 
b940: 73 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61  save the origina
b950: 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20  lly detected..  
b960: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
b970: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
b980: 72 63 68 69 74 65 63 74 75 72 65 20 62 65 66 6f  rchitecture befo
b990: 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d  re changing it..
b9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
b9b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
b9c0: 20 73 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f   string savedPro
b9d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b9e0: 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72  re = processorAr
b9f0: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e  chitecture;..#en
ba00: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
ba10: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ba20: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
ba30: 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65  We know that ope
ba40: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74  rating systems t
ba50: 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36  hat return "AMD6
ba60: 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  4" as..         
ba70: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
ba80: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
ba90: 69 74 65 63 74 75 72 65 20 61 72 65 20 61 63 74  itecture are act
baa0: 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74  ually a superset
bab0: 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20   of..           
bac0: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
bad0: 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20  "x86" processor 
bae0: 61 72 63 68 69 74 65 63 74 75 72 65 3b 20 74 68  architecture; th
baf0: 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d  erefore, return.
bb00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bb10: 2f 20 20 20 20 20 20 20 22 78 38 36 22 20 77 68  /       "x86" wh
bb20: 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  en the pointer s
bb30: 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d  ize is 32-bits..
bb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
bb50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
bb60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
bb70: 65 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d  ecture = "x86";.
bb80: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
bb90: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
bba0: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
bbb0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbe0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
bbf0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
bc00: 53 68 6f 77 20 74 68 61 74 20 77 65 20 68 69 74  Show that we hit
bc10: 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61   a fairly unusua
bc20: 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65  l situation (i.e
bc30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bc40: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
bc50: 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73  e "wrong" proces
bc60: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
bc70: 20 77 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d   was detected)..
bc80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bc90: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
bca0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
bcb0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
bcc0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
bcd0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
bce0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
bcf0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
bd00: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
bd20: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
bd30: 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74  re-loader detect
bd40: 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74  ed {0}-bit point
bd50: 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  er " +..        
bd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73                "s
bd70: 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65 73 73  ize with process
bd80: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
bd90: 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22  \"{1}\", using "
bda0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
bdb0: 20 20 20 20 20 20 20 20 20 20 22 70 72 6f 63 65            "proce
bdc0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
bdd0: 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61  e \"{2}\" instea
bde0: 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  d...",..        
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
be00: 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a  tPtr.Size * 8 /*
be10: 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50   bits */, savedP
be20: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
be30: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
be40: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
be50: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
be60: 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  re)); /* throw *
be70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
be80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
be90: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
bea0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
beb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
bec0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
bed0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
bee0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
bef0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
bf00: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
bf10: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
bf20: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
bf30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
bf40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
bf50: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
bf60: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
bf70: 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65   Framework, atte
bf80: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 6e  mpt to use the n
bf90: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
bfa0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
bfb0: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
bfc0: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
bfd0: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
bfe0: 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   us..           
bff0: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69 74 68     //       with
c000: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
c010: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
c020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
c030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
c040: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
c050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c060: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c070: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
c080: 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75 74 20  OTE: The output 
c090: 6f 66 20 74 68 65 20 47 65 74 53 79 73 74 65 6d  of the GetSystem
c0a0: 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69  Info function wi
c0b0: 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 20  ll be..         
c0c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c0d0: 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e 20 20    placed here.  
c0e0: 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65 73 73  Only the process
c0f0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
c100: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20  field..         
c110: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c120: 20 20 69 73 20 75 73 65 64 20 62 79 20 74 68 69    is used by thi
c130: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
c150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c160: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
c170: 65 74 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54  ethodsWin32.SYST
c180: 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e  EM_INFO systemIn
c190: 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  fo;....         
c1a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c1c0: 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68  / NOTE: Query th
c1d0: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
c1e0: 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b  tion via P/Invok
c1f0: 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20  e, thus..       
c200: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
c210: 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20      filling the 
c220: 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c250: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
c260: 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74  MethodsWin32.Get
c270: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73  SystemInfo(out s
c280: 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
c290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2a0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
c2b0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c2c0: 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65  Return the proce
c2d0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c2e0: 65 20 76 61 6c 75 65 20 61 73 20 61 20 73 74 72  e value as a str
c2f0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
c300: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
c310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
c320: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
c330: 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ure =..         
c340: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73               sys
c350: 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73  temInfo.wProcess
c360: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2e 54  orArchitecture.T
c370: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
c380: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
c390: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
c3a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c3b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c3c0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
c3d0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
c3e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c3f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c400: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c410: 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72   Upon failure, r
c420: 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73  eturn an empty s
c430: 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c  tring.  This wil
c440: 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20  l prevent..     
c450: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c460: 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65    the calling me
c470: 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64  thod from consid
c480: 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  ering this metho
c490: 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20  d call a..      
c4a0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
c4b0: 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20   "failure"...   
c4c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
c4e0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c4f0: 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  re = String.Empt
c500: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
c510: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
c520: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c570: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
c580: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
c590: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ture;..      }..
c5a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
c5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
c600: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
c610: 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
c620: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
c630: 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
c640: 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
c650: 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
c660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c670: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
c680: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
c690: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
c6a0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
c6b0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c6c0: 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
c6d0: 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
c6e0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
c6f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
c700: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
c710: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
c720: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
c730: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
c740: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
c750: 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
c760: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
c770: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
c780: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
c790: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
c7a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
c7b0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
c7c0: 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
c7d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
c7e0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c7f0: 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  re /* in */..   
c800: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
c810: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
c820: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
c830: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
c840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
c850: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
c860: 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
c870: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
c880: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
c890: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
c8a0: 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73  lOrEmpty(process
c8b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
c8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c8d0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
c8e0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
c8f0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
c900: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
c910: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c920: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c930: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
c940: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c950: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c960: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
c970: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c980: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d  platformName;...
c990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
c9a0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
c9b0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
c9c0: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a  s.TryGetValue(..
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9e0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
c9f0: 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74  rchitecture, out
ca00: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d   platformName)).
ca10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
ca20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ca30: 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66      return platf
ca40: 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ormName;..      
ca50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ca60: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ca70: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
ca80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
ca90: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
caa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
cae0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
caf0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
cb00: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
cb10: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
cb20: 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e  library based on
cb30: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
cb40: 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
cb50: 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ory and processo
cb60: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
cb70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
cb80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
cb90: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
cba0: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
cbb0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
cbc0: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
cbd0: 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
cbe0: 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
cbf0: 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
cc00: 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
cc10: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
cc20: 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
cc30: 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
cc40: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
cc50: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
cc60: 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
cc70: 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
cc80: 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
cc90: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
cca0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ccb0: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
ccc0: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
ccd0: 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
cce0: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
ccf0: 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
cd00: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
cd10: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
cd20: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
cd30: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
cd40: 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
cd50: 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
cd60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
cd70: 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
cd80: 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
cd90: 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
cda0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
cdb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
cdc0: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
cdd0: 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  uleFileName">.. 
cde0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e       /// The can
cdf0: 64 69 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f  didate native mo
ce00: 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74  dule file name t
ce10: 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73  o load will be s
ce20: 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20  tored here,..   
ce30: 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73     /// if necess
ce40: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
ce50: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ce60: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ce70: 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  "nativeModuleHan
ce80: 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  dle">..      ///
ce90: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
cea0: 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74  le handle as ret
ceb0: 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62  urned by LoadLib
cec0: 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f  rary will be sto
ced0: 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  red..      /// h
cee0: 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72  ere, if necessar
cef0: 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  y.  This value w
cf00: 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65  ill be IntPtr.Ze
cf10: 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74  ro if the call t
cf20: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61  o..      /// Loa
cf30: 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d  dLibrary fails..
cf40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
cf50: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
cf60: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
cf70: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
cf80: 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
cf90: 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63  e was loaded suc
cfa0: 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72  cessfully; other
cfb0: 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
cfc0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
cfd0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
cfe0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
cff0: 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53  ic bool PreLoadS
d000: 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
d010: 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65       string base
d020: 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20  Directory,      
d030: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
d040: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
d050: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
d060: 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e  ecture,    /* in
d070: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
d080: 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76 65  ef string native
d090: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20  ModuleFileName, 
d0a0: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
d0b0: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
d0c0: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
d0d0: 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d  le    /* out */.
d0e0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
d0f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d100: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
d110: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
d120: 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64 69  pecified base di
d130: 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c  rectory is null,
d140: 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   use the default
d150: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
d160: 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65 6d       (i.e. attem
d170: 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  pt to automatica
d180: 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e 0d  lly detect it)..
d190: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d1a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
d1b0: 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
d1c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
d1d0: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
d1e0: 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
d1f0: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
d200: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d210: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
d220: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
d230: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
d240: 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
d250: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d260: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73 65          if (base
d270: 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
d280: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d290: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
d2a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
d2b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
d2c0: 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  TE: Determine th
d2d0: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
d2e0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
d2f0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
d300: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
d310: 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e      If this is n
d320: 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73  ot known by this
d330: 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f   class, we canno
d340: 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20  t continue...   
d350: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d360: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
d370: 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61  NameOnly = GetNa
d380: 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
d390: 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ameOnly();....  
d3a0: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
d3b0: 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c  NameOnly == null
d3c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d3d0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
d3e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
d3f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d400: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
d410: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
d420: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
d430: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
d440: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
d450: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
d460: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
d470: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
d480: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
d490: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
d4a0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
d4b0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  baseDirectory,..
d4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
d4d0: 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
d4e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
d4f0: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
d500: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
d510: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
d520: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
d530: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
d540: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
d550: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
d560: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
d570: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
d580: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
d590: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
d5a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d5b0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
d5c0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
d5d0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
d5e0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
d5f0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
d600: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
d610: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
d620: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
d630: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
d640: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
d650: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
d660: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
d670: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
d680: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d690: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
d6a0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
d6b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d6c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
d6d0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
d6e0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d6f0: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
d700: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
d710: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
d720: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
d730: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
d740: 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
d750: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
d760: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
d770: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
d780: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
d790: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
d7a0: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
d7b0: 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
d7c0: 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
d7d0: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
d7e0: 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
d7f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
d800: 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
d810: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
d820: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
d830: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
d840: 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
d850: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
d860: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
d870: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
d880: 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
d890: 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
d8a0: 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
d8b0: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
d8c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
d8d0: 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
d8e0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
d8f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d900: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d910: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
d920: 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
d930: 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
d940: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
d950: 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
d960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
d970: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
d980: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
d9a0: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
d9b0: 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
d9c0: 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
d9d0: 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
da00: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
da10: 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
da20: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
da30: 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
da50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
da60: 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
da70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
da80: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
da90: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
daa0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dac0: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
dad0: 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
dae0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
daf0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
db00: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
db10: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
db20: 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
db30: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
db40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
db50: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
db60: 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
db70: 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
db80: 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
db90: 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
dba0: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
dbb0: 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
dbc0: 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
dbd0: 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
dbe0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
dbf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
dc00: 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
dc10: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
dc20: 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
dc30: 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
dc40: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dc50: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
dc60: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
dc70: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
dc80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
dc90: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
dca0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
dcb0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
dcc0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
dcd0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
dce0: 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
dcf0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
dd00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dd20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd30: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
dd40: 77 20 65 78 61 63 74 6c 79 20 77 68 65 72 65 20  w exactly where 
dd50: 77 65 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f  we are trying to
dd60: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
dd70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd80: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
dd90: 69 74 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d  ite library from
dda0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ddb0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ddc0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
ddd0: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
dde0: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
ddf0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
de10: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
de20: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
de30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de40: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
de50: 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74   pre-loader is t
de60: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61  rying to load na
de70: 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
dea0: 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c  \"{0}\"...", fil
deb0: 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f  eName)); /* thro
dec0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
ded0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
dee0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
def0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
df00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
df10: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
df20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
df30: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
df40: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
df50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
df60: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f  E: Attempt to lo
df70: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  ad the native li
df80: 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c  brary.  This wil
df90: 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20  l either..      
dfa0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
dfb0: 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20   return a valid 
dfc0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
dfd0: 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74  ndle, return Int
dfe0: 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20  Ptr.Zero,..     
dff0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
e000: 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78    or throw an ex
e010: 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d  ception.  This m
e020: 75 73 74 20 75 73 65 20 74 68 65 20 61 70 70 72  ust use the appr
e030: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20  opriate..       
e040: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
e050: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20  P/Invoke method 
e060: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
e070: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
e080: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e090: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e0a0: 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46     nativeModuleF
e0b0: 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61  ileName = fileNa
e0c0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
e0d0: 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48     nativeModuleH
e0e0: 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69  andle = NativeLi
e0f0: 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64  braryHelper.Load
e100: 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65  Library(fileName
e110: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e120: 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69      return (nati
e130: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21  veModuleHandle !
e140: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
e150: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
e160: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
e170: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
e180: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  AD..          ca
e190: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
e1a0: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
e1b0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
e1c0: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
e1d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
e1e0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
e1f0: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
e200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e210: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
e220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e230: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e250: 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72   NOTE: First, gr
e260: 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33  ab the last Win3
e270: 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d  2 error number..
e280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e290: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
e2a0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73           int las
e2b0: 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c  tError = Marshal
e2c0: 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72  .GetLastWin32Err
e2d0: 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or(); /* throw *
e2e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
e2f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e310: 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65  NOTE: Show where
e320: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f   we failed to lo
e330: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
e340: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
e350: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e360: 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c   library from al
e370: 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e  ong with the Win
e380: 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  32 error code an
e390: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
e3a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
e3b0: 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74  ception informat
e3c0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
e3d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
e3f0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
e400: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
e410: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e430: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
e440: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
e450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e460: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
e470: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
e480: 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61  ailed to load na
e490: 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4b0: 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
e4c0: 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73 74  \"{0}\" (getLast
e4d0: 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32  Error = {1}): {2
e4e0: 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
e4f0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
e500: 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20  ame, lastError, 
e510: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e530: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
e540: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
e550: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e560: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
e570: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
e580: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
e590: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
e5a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
e5b0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
e5c0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e    }..#endif..#en
e5d0: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
e5e0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
e5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
e640: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e650: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f  FRAMEWORK..    /
e660: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
e670: 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  On the .NET Comp
e680: 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74  act Framework, t
e690: 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65 72 6f  he native intero
e6a0: 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d  p assembly must.
e6b0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65  .    //       be
e6c0: 20 75 73 65 64 20 62 65 63 61 75 73 65 20 69 74   used because it
e6d0: 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72 61   provides severa
e6e0: 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f  l workarounds to
e6f0: 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20   .NET Compact.. 
e700: 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72 61 6d     //       Fram
e710: 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e  ework limitation
e720: 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20  s important for 
e730: 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69 6f 6e  proper operation
e740: 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a 20 20   of the core..  
e750: 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73 74 65    //       Syste
e760: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 66 75  m.Data.SQLite fu
e770: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67  nctionality (e.g
e780: 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f 20  . being able to 
e790: 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20  bind..    //    
e7a0: 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e     parameters an
e7b0: 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20  d handle column 
e7c0: 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 73 20  values of types 
e7d0: 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62 6c 65  Int64 and Double
e7e0: 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  )...    //..#if 
e7f0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 5f  SQLITE_STANDARD_
e800: 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d 0a 20 20  LIBRARY_NAME..  
e810: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
e820: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
e830: 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d  LL = "sqlite3";.
e840: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69 6e 74 65  .#else..    inte
e850: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
e860: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
e870: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31  SQLite.Interop.1
e880: 30 30 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  00.dll";..#endif
e890: 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53  ..#elif SQLITE_S
e8a0: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d  TANDARD..    //.
e8b0: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74  .    // NOTE: Ot
e8c0: 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20  herwise, if the 
e8d0: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
e8e0: 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c  library is enabl
e8f0: 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20  ed, use it...   
e900: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
e910: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
e920: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c  QLITE_DLL = "sql
e930: 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53  ite3";..#elif US
e940: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20  E_INTEROP_DLL.. 
e950: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
e960: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
e970: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
e980: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
e990: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
e9a0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
e9b0: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
e9c0: 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
e9d0: 41 52 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45  ARD_LIBRARY_NAME
e9e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
e9f0: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
ea00: 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65  TE_DLL = "sqlite
ea10: 33 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  3";..#else..    
ea20: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73  internal const s
ea30: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
ea40: 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
ea50: 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  op.dll";..#endif
ea60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d  ..#else..    //.
ea70: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69  .    // NOTE: Fi
ea80: 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68  nally, assume th
ea90: 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  at the mixed-mod
eaa0: 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65  e assembly is be
eab0: 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f  ing used...    /
eac0: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
ead0: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
eae0: 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65  ITE_DLL = "Syste
eaf0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
eb00: 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  l";..#endif.... 
eb10: 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69     // This secti
eb20: 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20  on uses interop 
eb30: 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20  calls that also 
eb40: 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74  fetch text lengt
eb50: 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f  h to optimize co
eb60: 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nversion...    /
eb70: 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65  / When using the
eb80: 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77   standard dll, w
eb90: 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68  e can replace th
eba0: 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e  ese calls with n
ebb0: 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c  ormal sqlite cal
ebc0: 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64  ls and..    // d
ebd0: 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f  o unoptimized co
ebe0: 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61  nversions instea
ebf0: 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20  d afterwards..  
ec00: 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f    #region intero
ec10: 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67  p added textleng
ec20: 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  th calls....#if 
ec30: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
ec40: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
ec50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ec60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ec70: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
ec80: 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  tr sqlite3_bind_
ec90: 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69  parameter_name_i
eca0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
ecb0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
ecc0: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
ecd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ece0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
ecf0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ed00: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
ed10: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
ed20: 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65  tabase_name_inte
ed30: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
ed40: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
ed50: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
ed60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ed70: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
ed80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ed90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
eda0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
edb0: 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  ase_name16_inter
edc0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
edd0: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
ede0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
edf0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ee00: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
ee10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ee20: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ee30: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
ee40: 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  pe_interop(IntPt
ee50: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
ee60: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
ee70: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
ee80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ee90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
eea0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
eeb0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
eec0: 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74  n_decltype16_int
eed0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
eee0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
eef0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
ef00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ef10: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
ef20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ef30: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
ef40: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
ef50: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
ef60: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
ef70: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
ef80: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ef90: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
efa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
efb0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
efc0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
efd0: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
efe0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
eff0: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
f000: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
f010: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f020: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
f030: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f040: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
f050: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
f060: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
f070: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
f080: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
f090: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
f0a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f0b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f0c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
f0d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
f0e0: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69  _origin_name16_i
f0f0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
f100: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
f110: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
f120: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f130: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
f140: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f150: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
f160: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
f170: 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ble_name_interop
f180: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
f190: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
f1a0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
f1b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f1c0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
f1d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f1e0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f1f0: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
f200: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
f210: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
f220: 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
f230: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
f240: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f250: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f260: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
f270: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
f280: 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70  umn_text_interop
f290: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
f2a0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
f2b0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
f2c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f2d0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
f2e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f2f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f300: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69  _column_text16_i
f310: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
f320: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
f330: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
f340: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f350: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
f360: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f370: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
f380: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e  qlite3_errmsg_in
f390: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
f3a0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
f3b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f3c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
f3d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f3e0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f3f0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f400: 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f  3_prepare_intero
f410: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  p(IntPtr db, Int
f420: 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
f430: 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
f440: 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
f450: 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66  r ptrRemain, ref
f460: 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a   int nRemain);..
f470: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f480: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
f490: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f4a0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f4b0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f4c0: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
f4d0: 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28  etadata_interop(
f4e0: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
f4f0: 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  ] dbName, byte[]
f500: 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d   tblName, byte[]
f510: 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e   colName, ref In
f520: 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65  tPtr ptrDataType
f530: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
f540: 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74  CollSeq, ref int
f550: 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e   notNull, ref in
f560: 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65  t primaryKey, re
f570: 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72  f int autoInc, r
f580: 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65  ef int dtLen, re
f590: 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d  f int csLen);...
f5a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f5b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f5c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f5d0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f5e0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
f5f0: 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
f600: 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  r p, ref int len
f610: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
f620: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f630: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f640: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
f650: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
f660: 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f  ue_text16_intero
f670: 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
f680: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
f690: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f6a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f6b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f6c0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
f6d0: 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74  _malloc_size_int
f6e0: 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d  erop(IntPtr p);.
f6f0: 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c  ...#if INTEROP_L
f700: 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  OG..    [DllImpo
f710: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f720: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f730: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
f740: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
f750: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69  te3_config_log_i
f760: 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69  nterop();..#endi
f770: 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  f..#endif..// !S
f780: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
f790: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
f7a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
f7b0: 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65   functions add e
f7c0: 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  xisting function
f7d0: 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20  ality on top of 
f7e0: 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69  SQLite and requi
f7f0: 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f  re a little effo
f800: 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65  rt to..    // ge
f810: 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75  t working when u
f820: 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
f830: 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
f840: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  ...    #region i
f850: 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e  nterop added fun
f860: 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69  ctionality....#i
f870: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
f880: 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
f890: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f8a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f8b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
f8c0: 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62  tPtr interop_lib
f8d0: 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20  version();....  
f8e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f8f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f900: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f910: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
f920: 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b  erop_sourceid();
f930: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
f940: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f950: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f960: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
f970: 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
f980: 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74  ption_used(IntPt
f990: 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a  r zOptName);....
f9a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f9b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
f9c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f9d0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
f9e0: 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
f9f0: 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
fa00: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
fa10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
fa20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
fa30: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
fa40: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
fa50: 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  te3_close_intero
fa60: 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  p(IntPtr db);...
fa70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fa80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
fa90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
faa0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
fab0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
fac0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
fad0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
fae0: 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
faf0: 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69  me, int nArgs, i
fb00: 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
fb10: 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
fb20: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51  allback func, SQ
fb30: 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74  LiteCallback fst
fb40: 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43  ep, SQLiteFinalC
fb50: 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20  allback ffinal, 
fb60: 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29  int needCollSeq)
fb70: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
fb80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
fb90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fba0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
fbb0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fbc0: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e  ite3_finalize_in
fbd0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
fbe0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  t);....    [DllI
fbf0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fc00: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
fc10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
fc20: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
fc30: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
fc40: 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nish_interop(Int
fc50: 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
fc60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fc70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
fc80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fc90: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
fca0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
fcb0: 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74  open_interop(byt
fcc0: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
fcd0: 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65  , byte[] vfsName
fce0: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
fcf0: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74  sEnum flags, int
fd00: 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49   extFuncs, ref I
fd10: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
fd20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fd30: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
fd40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fd50: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fd60: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
fd70: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
fd80: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
fd90: 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65  , byte[] vfsName
fda0: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
fdb0: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74  sEnum flags, int
fdc0: 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49   extFuncs, ref I
fdd0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
fde0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fdf0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
fe00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fe10: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fe20: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
fe30: 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  set_interop(IntP
fe40: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20  tr stmt);....   
fe50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fe60: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
fe70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
fe80: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
fe90: 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70  _changes_interop
fea0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65  (IntPtr db);..#e
feb0: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
fec0: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
fed0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
fee0: 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61     // The standa
fef0: 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69  rd api call equi
ff00: 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61  valents of the a
ff10: 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c  bove interop cal
ff20: 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ls..    #region 
ff30: 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e  standard version
ff40: 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e  s of interop fun
ff50: 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51  ctions....#if SQ
ff60: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
ff70: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ff80: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ff90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ffa0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ffb0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ffc0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ffd0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ffe0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fff0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10000 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10010 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10020 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10030 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  e sqlite3_close(
10040 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
10050 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41  if !INTEROP_LEGA
10060 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50  CY_CLOSE..#if !P
10070 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10080 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
100a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
100b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
100c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
100d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
100e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
100f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10100 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10110 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10120 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10130 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50  e3_close_v2(IntP
10140 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31  tr db); /* 3.7.1
10150 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d  4+ */..#endif...
10160 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10170 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10180 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10190 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
101a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
101b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
101c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
101d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
101e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
101f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10200 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10210 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10220 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
10230 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72  _function(IntPtr
10240 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
10250 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
10260 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
10270 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
10280 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
10290 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
102a0 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
102b0 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29  Callback ffinal)
102c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
102d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
102e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
102f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10300 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10310 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10320 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10330 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10340 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10350 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10360 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10370 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10380 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
10390 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74  nalize(IntPtr st
103a0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
103b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
103c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
103d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
103e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
103f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10400 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10410 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10430 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10440 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10450 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10460 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10470 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49  _backup_finish(I
10480 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
10490 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
104a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
104b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
104c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
104d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
104e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
104f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10500 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10510 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10520 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10530 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10540 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10550 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  de sqlite3_reset
10560 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
10570 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10580 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10590 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
105a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
105b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
105c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
105d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
105e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
105f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10600 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10610 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10620 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10630 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
10640 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
10650 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10660 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10670 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10680 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10690 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
106a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
106b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
106c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
106d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
106e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
106f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10700 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10710 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10720 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
10730 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
10740 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
10750 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10760 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10770 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10780 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10790 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
107a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
107b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
107c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
107d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
107e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
107f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10800 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
10810 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
10820 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  se_name16(IntPtr
10830 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10840 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10850 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10860 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10870 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10880 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10890 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
108a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
108b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
108c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
108d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
108e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
108f0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
10900 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
10910 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  ltype(IntPtr stm
10920 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10930 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10940 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10950 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10960 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10970 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10980 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10990 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
109a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
109b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
109c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
109d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
109e0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
109f0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
10a00 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
10a10 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
10a20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10a30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10a40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10a50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10a60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10a70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10a80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10a90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10aa0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10ab0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10ac0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10ad0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
10ae0 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50  column_name(IntP
10af0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10b00 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
10b10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10b20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10b30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10b40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10b50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10b60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10b70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10b80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10b90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10ba0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10bb0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
10bc0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
10bd0 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
10be0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10bf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10c00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10c10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10c20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10c30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10c40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10c50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10c60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10c70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10c80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10c90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10ca0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10cb0 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
10cc0 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
10cd0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
10ce0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10cf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10d10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10d20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10d30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10d40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10d60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10d70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10d80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10d90 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10da0 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
10db0 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
10dc0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10dd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10de0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10df0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10e00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10e10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10e20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10e30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10e40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10e50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10e60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10e70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10e80 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10e90 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
10ea0 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
10eb0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
10ec0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10ed0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10ee0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10ef0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10f00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10f10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10f20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10f30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10f40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10f50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10f60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10f70 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
10f80 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
10f90 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
10fa0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
10fb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10fc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10fe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10ff0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11000 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11010 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11020 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11030 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11040 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11050 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11060 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11070 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50  column_text(IntP
11080 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
11090 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
110a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
110b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
110c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
110d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
110e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
110f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11100 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11110 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11120 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11130 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11140 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
11150 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
11160 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
11170 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
11180 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11190 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
111a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
111b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
111c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
111d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
111e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
111f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11200 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11210 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11220 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11230 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
11240 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20  3_errmsg(IntPtr 
11250 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
11260 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11270 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11290 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
112a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
112b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
112c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
112d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
112e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
112f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11300 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
11310 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
11320 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74 72 20  _prepare(IntPtr 
11330 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
11340 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66   int nBytes, ref
11350 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65   IntPtr stmt, re
11360 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  f IntPtr ptrRema
11370 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f  in);....#if USE_
11380 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20  PREPARE_V2..#if 
11390 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
113a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
113b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
113c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
113d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
113e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
113f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11400 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11410 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11420 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11430 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11440 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11450 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
11460 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
11470 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
11480 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
11490 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
114a0 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e  ptrRemain);..#en
114b0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
114c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
114d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
114e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
114f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11500 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11510 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11520 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11530 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11540 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11550 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11560 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
11570 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
11580 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
11590 61 64 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c  adata(IntPtr db,
115a0 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
115b0 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
115c0 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
115d0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61  ref IntPtr ptrDa
115e0 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50  taType, ref IntP
115f0 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72  tr ptrCollSeq, r
11600 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20  ef int notNull, 
11610 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b  ref int primaryK
11620 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f  ey, ref int auto
11630 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Inc);....#if !PL
11640 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11650 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11660 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11670 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11680 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11690 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
116a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
116b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
116c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
116d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
116e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
116f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
11700 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ext(IntPtr p);..
11710 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11720 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11740 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11750 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11770 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11780 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
117a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
117b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
117c0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
117d0 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49  3_value_text16(I
117e0 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e  ntPtr p);....#en
117f0 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49  dif..    // SQLI
11800 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
11810 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
11820 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75  .    // These fu
11830 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74  nctions are cust
11840 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65  om and have no e
11850 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61  quivalent standa
11860 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f  rd library metho
11870 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f  d...    // All o
11880 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65  f them are "nice
11890 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e   to haves" and n
118a0 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22  ot necessarily "
118b0 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d  need to haves"..
118c0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20  .    #region no 
118d0 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64  equivalent stand
118e0 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69  ard method....#i
118f0 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
11900 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
11910 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11920 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11930 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11940 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e  tPtr sqlite3_con
11950 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74  text_collseq_int
11960 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
11970 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74 79 70  ext, ref int typ
11980 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63 2c 20  e, ref int enc, 
11990 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
119a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
119b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
119c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
119d0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
119e0 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
119f0 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70  lcompare_interop
11a00 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
11a10 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20   byte[] p1, int 
11a20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32  p1len, byte[] p2
11a30 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d  , int p2len);...
11a40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11a50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11a60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11a70 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
11a80 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
11a90 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e  _cursor_rowid_in
11aa0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
11ab0 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 72  t, int cursor, r
11ac0 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d  ef long rowid);.
11ad0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
11ae0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11af0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11b00 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
11b10 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
11b20 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f  e3_index_column_
11b30 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74  info_interop(Int
11b40 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63  Ptr db, byte[] c
11b50 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49  atalog, byte[] I
11b60 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  ndexName, byte[]
11b70 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65 66   ColumnName, ref
11b80 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20   int sortOrder, 
11b90 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c  ref int onError,
11ba0 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f 6c 6c   ref IntPtr Coll
11bb0 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 63  ation, ref int c
11bc0 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  olllen);....    
11bd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11be0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
11bf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11c00 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
11c10 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74  table_cursor_int
11c20 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
11c30 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61  , int db, int ta
11c40 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d  bleRootPage);...
11c50 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
11c60 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
11c70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
11c80 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72  ..    // Standar
11c90 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62  d API calls glob
11ca0 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f  al across versio
11cb0 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 61  ns.  There are a
11cc0 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f   few instances o
11cd0 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d  f interop calls.
11ce0 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65  .    // scattere
11cf0 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74  d in here, but t
11d00 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74  hey are only act
11d10 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52  ive when PLATFOR
11d20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11d30 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d  RK is declared..
11d40 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61  .    #region sta
11d50 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61 70 69  ndard sqlite api
11d60 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50   calls....#if !P
11d70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11d80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11d90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11da0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11db0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11dc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11dd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11de0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11df0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11e00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11e10 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
11e20 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  r sqlite3_libver
11e30 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  sion();....#if !
11e40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11e50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11e60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11e70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11e80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11e90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11ea0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11eb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11ec0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11ed0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11ee0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
11ef0 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
11f00 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a  on_number();....
11f10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11f20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11f30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11f40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11f50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11f60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11f70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11f80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11f90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11fa0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11fb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11fc0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11fd0 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23  sourceid();....#
11fe0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11ff0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12010 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12020 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12030 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12040 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12050 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12060 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12070 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12080 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12090 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  int sqlite3_comp
120a0 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49  ileoption_used(I
120b0 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b  ntPtr zOptName);
120c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
120d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
120e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
120f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12100 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12110 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12120 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12130 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12140 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12150 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12160 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12170 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12180 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
12190 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d  n_get(int N);...
121a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
121b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
121c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
121d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
121e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
121f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12200 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12210 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12220 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12230 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12240 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12250 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
12260 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  e sqlite3_enable
12270 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 0d 0a  _shared_cache(..
12280 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e 61 62          int enab
12290 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  le);....#if !PLA
122a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
122b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
122c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
122d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
122e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
122f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12300 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12310 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12320 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12330 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12340 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12350 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12360 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74  _enable_load_ext
12370 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
12380 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20   IntPtr db, int 
12390 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  enable);....#if 
123a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
123b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
123c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
123d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
123e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
123f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12400 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12420 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12430 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12440 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
12450 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
12460 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
12470 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ion(..        In
12480 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
12490 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  fileName, byte[]
124a0 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49   procName, ref I
124b0 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a  ntPtr pError);..
124c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
124d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
124e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
124f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12500 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12510 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12520 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12530 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12540 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12550 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12560 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12570 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12580 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c  de sqlite3_overl
12590 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  oad_function(Int
125a0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
125b0 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29  Name, int nArgs)
125c0 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53  ;....#if WINDOWS
125d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
125e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
125f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12600 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12610 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12630 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
12640 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
12650 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
12660 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12670 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
12680 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
12690 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
126a0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
126b0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
126c0 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74  win32_set_direct
126d0 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65  ory" SQLite core
126e0 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
126f0 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
12700 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
12710 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20  d on Windows... 
12720 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
12730 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12740 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
12750 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
12760 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69  set_directory(ui
12770 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20  nt type, string 
12780 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
12790 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53  DEBUG // NOTE: S
127a0 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48  hould be "WIN32H
127b0 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47  EAP && !MEMDEBUG
127c0 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  "..#if !PLATFORM
127d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
127e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
127f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12800 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12810 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12820 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12830 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12840 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12850 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
12860 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
12870 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
12880 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c  _reset_heap" SQL
12890 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
128a0 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
128b0 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
128c0 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
128d0 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69  dows when the Wi
128e0 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63  n32 native alloc
128f0 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20  ator is in..    
12900 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e  //       use (i.
12910 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69  e. by default, i
12920 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c  n "Release" buil
12930 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
12940 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  a.SQLite..    //
12950 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42         only).  B
12960 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44  y default, in "D
12970 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20  ebug" builds of 
12980 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
12990 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  te, the..    // 
129a0 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61        MEMDEBUG a
129b0 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64  llocator is used
129c0 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
129d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
129e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
129f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
12a00 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29  n32_reset_heap()
12a10 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12a20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12a30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12a40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12a50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12a60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12a70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12a80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12a90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12aa0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
12ab0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
12ac0 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
12ad0 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22  32_compact_heap"
12ae0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
12af0 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
12b00 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
12b10 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
12b20 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68   Windows when th
12b30 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61  e Win32 native a
12b40 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a  llocator is in..
12b50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
12b60 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c   (i.e. by defaul
12b70 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20  t, in "Release" 
12b80 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
12b90 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20  .Data.SQLite..  
12ba0 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29    //       only)
12bb0 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69  .  By default, i
12bc0 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73  n "Debug" builds
12bd0 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
12be0 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20  SQLite, the..   
12bf0 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42   //       MEMDEB
12c00 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  UG allocator is 
12c10 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
12c20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12c30 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12c40 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12c50 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
12c60 68 65 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61  heap(ref uint la
12c70 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  rgest);..#endif.
12c80 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
12c90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12ca0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12cb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12cc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12cd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12ce0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12cf0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12d00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12d10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12d20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12d30 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12d40 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  tr sqlite3_mallo
12d50 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  c(int n);....#if
12d60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12d70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12d80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12d90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12da0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12db0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12dc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12dd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12de0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12df0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12e00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
12e10 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61  tPtr sqlite3_rea
12e20 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69  lloc(IntPtr p, i
12e30 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
12e40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12e50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12e60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12e70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12e80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12e90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12ea0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12eb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12ec0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12ed0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12ee0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
12ef0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74  sqlite3_free(Int
12f00 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
12f10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12f20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12f30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12f40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12f50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12f60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12f70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12f80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12f90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12fa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12fb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
12fc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
12fd0 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65  te3_open_v2(byte
12fe0 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c  [] utf8Filename,
12ff0 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 2c 20   ref IntPtr db, 
13000 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
13010 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79 74 65 5b  num flags, byte[
13020 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] vfsName);....#
13030 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13040 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13050 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13060 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13070 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13080 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13090 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
130a0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
130b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
130c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
130d0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
130e0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
130f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13100 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13110 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
13120 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
13130 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65  en16(string file
13140 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
13150 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
13160 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13170 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13180 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13190 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
131a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
131b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
131c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
131d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
131e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
131f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13200 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13210 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
13220 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
13230 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13240 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13250 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13260 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13270 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13280 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13290 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
132a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
132b0 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
132c0 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
132d0 77 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  wid(IntPtr db);.
132e0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
132f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13300 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13320 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13330 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13340 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13350 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13360 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13370 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13380 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13390 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
133a0 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
133b0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
133c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
133d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
133e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
133f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13400 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13410 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13420 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
13430 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13440 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
13450 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d  _memory_used();.
13460 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
13470 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13480 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13490 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
134a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
134b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
134c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
134d0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
134e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
134f0 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
13500 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e  ory_highwater(in
13510 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23  t resetFlag);..#
13520 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
13530 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13540 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13560 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13570 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13580 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13590 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
135a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
135b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
135c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
135d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
135e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
135f0 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d  3_shutdown();...
13600 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13610 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13630 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13640 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13660 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13670 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13680 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13690 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
136a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
136b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
136c0 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  e sqlite3_busy_t
136d0 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62  imeout(IntPtr db
136e0 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69  , int ms);....#i
136f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13700 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13710 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13720 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13730 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13740 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13750 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13760 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13770 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13780 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13790 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
137a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
137b0 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e  qlite3_clear_bin
137c0 64 69 6e 67 73 28 49 6e 74 50 74 72 20 73 74 6d  dings(IntPtr stm
137d0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
137e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
137f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13810 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13820 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13830 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13840 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13860 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13870 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13880 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13890 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
138a0 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72  bind_blob(IntPtr
138b0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
138c0 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , Byte[] value, 
138d0 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
138e0 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a  r nTransient);..
138f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13900 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13910 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13920 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13930 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13940 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13950 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
13960 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13970 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13980 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
13990 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ind_double(IntPt
139a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
139b0 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  x, double value)
139c0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
139d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
139e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
139f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13a00 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13a10 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13a20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13a30 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13a40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13a50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13a60 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13a70 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13a80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
13a90 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49  lite3_bind_int(I
13aa0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
13ab0 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65  index, int value
13ac0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  );....    //..  
13ad0 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
13ae0 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c  really just call
13af0 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  s "sqlite3_bind_
13b00 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  int"; however, i
13b10 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
13b20 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
13b30 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
13b40 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28  or an unsigned (
13b50 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e  32-bit) integer.
13b60 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50  ..    //..#if !P
13b70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13b80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13b90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13ba0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13bb0 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
13bc0 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  int", CallingCon
13bd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13bf0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13c00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13c10 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
13c20 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
13c30 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66  d_int")]..#endif
13c40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13c50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13c60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13c70 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49  ite3_bind_uint(I
13c80 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
13c90 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75  index, uint valu
13ca0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
13cb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13cc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13cd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13ce0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13cf0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13d00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13d10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13d20 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13d30 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13d40 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49  te3_bind_int64(I
13d50 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
13d60 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75  index, long valu
13d70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
13d80 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
13d90 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20  TE: This really 
13da0 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69  just calls "sqli
13db0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b  te3_bind_int64";
13dc0 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
13dd0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
13de0 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
13df0 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
13e00 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28   unsigned long (
13e10 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e  64-bit) integer.
13e20 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50  ..    //..#if !P
13e30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13e40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13e60 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
13e70 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
13e80 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43  int64", CallingC
13e90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13ea0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13eb0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
13ec0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13ed0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13ee0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
13ef0 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
13f00 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c  t, int index, ul
13f10 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
13f20 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
13f30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13f40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13f50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13f60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13f70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13f80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13f90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13fa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13fb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13fc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13fd0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13fe0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13ff0 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  bind_null(IntPtr
14000 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
14010 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14020 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14030 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14040 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14050 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14060 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14070 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14080 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14090 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
140a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
140b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
140c0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
140d0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
140e0 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ind_text(IntPtr 
140f0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14100 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
14110 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
14120 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
14130 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14140 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14150 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14160 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14170 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14180 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14190 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
141a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
141b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
141c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
141d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
141e0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
141f0 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
14200 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
14210 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14220 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14230 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14240 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14250 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14260 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14270 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14280 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14290 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
142a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
142b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
142c0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
142d0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
142e0 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74  ndex(IntPtr stmt
142f0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
14300 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14310 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14320 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14330 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14340 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14350 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14360 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14370 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14380 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14390 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
143a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
143b0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
143c0 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
143d0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
143e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
143f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14400 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14410 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14420 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14430 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14440 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14450 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14460 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14470 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14480 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14490 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
144a0 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  e sqlite3_step(I
144b0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
144c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
144d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
144e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
144f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14500 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14510 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14520 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14530 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14540 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14550 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14560 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14570 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d   int sqlite3_stm
14580 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74  t_readonly(IntPt
14590 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e  r stmt); /* 3.7.
145a0 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  4+ */....#if !PL
145b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
145c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
145d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
145e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
145f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14600 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14610 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14620 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
14630 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c  uble sqlite3_col
14640 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  umn_double(IntPt
14650 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14660 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
14670 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14680 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
146a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
146b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
146c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
146d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
146e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
146f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14700 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14710 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14720 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
14730 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  mn_int(IntPtr st
14740 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
14750 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14760 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14770 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14780 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14790 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
147a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
147b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
147c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
147d0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
147e0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
147f0 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
14800 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64  nt index);..#end
14810 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
14820 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14830 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14840 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14850 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14860 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14870 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14880 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14890 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
148a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
148b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
148c0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
148d0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
148e0 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
148f0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
14900 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14910 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14920 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14930 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14940 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14950 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14960 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
14970 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14980 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
14990 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
149a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
149b0 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
149c0 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
149d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
149e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
149f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14a00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14a20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14a30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14a40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14a50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14a60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14a70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14a80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14a90 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
14aa0 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28  _column_bytes16(
14ab0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14ac0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
14ad0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14ae0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14b00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14b10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14b20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14b30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14b40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14b50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14b60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14b70 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
14b80 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
14b90 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e  3_column_type(In
14ba0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14bb0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14bc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14bd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14be0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14bf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14c00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14c10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14c20 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14c30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14c40 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14c50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14c60 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14c70 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14c80 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
14c90 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
14ca0 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
14cb0 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
14cc0 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
14cd0 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d  ollation func);.
14ce0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14cf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14d00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14d10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14d20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14d30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14d40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14d50 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14d60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14d70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14d80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14d90 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
14da0 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
14db0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
14dc0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14dd0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14de0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14df0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14e00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14e10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14e20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14e30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14e40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14e50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14e60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14e70 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14e80 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49  te3_value_blob(I
14e90 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
14ea0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14eb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14ec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ed0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14ee0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14f00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14f10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14f20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14f30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14f40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
14f50 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
14f60 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b  bytes(IntPtr p);
14f70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14f80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14f90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14fa0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14fb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14fc0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14fd0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14fe0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14ff0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15000 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15010 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15020 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
15030 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49  _value_bytes16(I
15040 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
15050 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15060 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15080 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15090 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
150a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
150b0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
150c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
150d0 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  n double sqlite3
150e0 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e  _value_double(In
150f0 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66  tPtr p);..#endif
15100 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15110 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15120 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15130 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15140 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15150 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15160 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15170 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15180 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15190 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
151a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
151b0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
151c0 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74  _value_int(IntPt
151d0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
151e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
151f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15200 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15210 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15220 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15230 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15240 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15250 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
15260 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ng sqlite3_value
15270 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29  _int64(IntPtr p)
15280 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
15290 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
152a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
152b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
152c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
152d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
152e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
152f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15300 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15310 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15320 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15330 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79  static extern Ty
15340 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74  peAffinity sqlit
15350 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e  e3_value_type(In
15360 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
15370 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15380 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15390 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
153a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
153b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
153c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
153d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
153e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
153f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15400 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15410 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15420 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
15430 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  _blob(IntPtr con
15440 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
15450 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
15460 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
15470 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15480 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15490 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
154a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
154b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
154c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
154d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
154e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
154f0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
15500 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
15510 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e  ouble(IntPtr con
15520 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c  text, double val
15530 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
15540 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15550 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15570 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15590 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
155a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
155b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
155c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
155d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
155e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
155f0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
15600 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74  sult_error(IntPt
15610 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
15620 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c  ] strErr, int nL
15630 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
15640 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15650 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15660 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15670 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15680 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15690 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
156a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
156b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
156c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
156d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
156e0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
156f0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
15700 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63  or_code(IntPtr c
15710 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72  ontext, SQLiteEr
15720 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d  rorCode value);.
15730 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15740 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15750 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15770 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15780 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15790 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
157a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
157b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
157c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
157d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
157e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
157f0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f  _result_error_to
15800 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74  obig(IntPtr cont
15810 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
15820 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15830 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15840 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15850 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15860 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15870 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15880 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15890 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
158a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
158b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
158c0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
158d0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
158e0 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72  ror_nomem(IntPtr
158f0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
15900 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15910 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15920 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15930 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15940 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15950 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15960 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15970 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15980 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15990 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
159a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
159b0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
159c0 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20  lt_value(IntPtr 
159d0 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
159e0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
159f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15a00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15a10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15a20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15a30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15a40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15a50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15a60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15a70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15a80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15a90 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15aa0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
15ab0 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20  zeroblob(IntPtr 
15ac0 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65  context, int nLe
15ad0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
15ae0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15af0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15b00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15b10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15b20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15b30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15b40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15b50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15b60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15b70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15b80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
15b90 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
15ba0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15bb0 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
15bc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15bd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15be0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15bf0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15c00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15c10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15c20 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
15c30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15c40 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
15c50 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e  _result_int64(In
15c60 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f  tPtr context, lo
15c70 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
15c80 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
15c90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15ca0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15cc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15cd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15ce0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15cf0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
15d00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15d10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15d20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15d30 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
15d40 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28  te3_result_null(
15d50 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
15d60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15d70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15d80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15d90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15db0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15dc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15dd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15de0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15df0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15e00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15e10 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
15e20 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e  3_result_text(In
15e30 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
15e40 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
15e50 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
15e60 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
15e70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15e80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15e90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15ea0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15eb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15ec0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15ed0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15ee0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15ef0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15f00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15f10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
15f20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67  tPtr sqlite3_agg
15f30 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49  regate_context(I
15f40 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
15f50 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
15f60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15f70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15f80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15f90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15fa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15fb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15fc0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
15fd0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
15fe0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15ff0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16000 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
16010 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
16020 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16030 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16040 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
16050 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
16060 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  nd_text16(IntPtr
16070 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
16080 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20  , string value, 
16090 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72  int nlen, IntPtr
160a0 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
160b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
160c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
160d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
160e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
160f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16100 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16110 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
16120 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
16130 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
16140 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16150 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
16160 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
16170 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
16180 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16190 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
161a0 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
161b0 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  r16(IntPtr conte
161c0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
161d0 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  me, int nLen);..
161e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
161f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16200 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16210 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16220 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16230 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16240 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
16250 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
16260 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
16270 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16280 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
16290 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
162a0 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
162b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
162c0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
162d0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
162e0 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t16(IntPtr conte
162f0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
16300 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  me, int nLen, In
16310 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
16320 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
16330 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f  _CODEC || INTERO
16340 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23  P_INCLUDE_SEE..#
16350 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16360 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16370 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16380 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16390 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
163a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
163b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
163c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
163d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
163e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
163f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16400 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16410 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50  sqlite3_key(IntP
16420 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65  tr db, byte[] ke
16430 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d  y, int keylen);.
16440 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16460 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16470 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16490 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
164a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
164b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
164c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
164d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
164e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
164f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
16500 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65  ode sqlite3_reke
16510 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
16520 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
16530 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  len);..#endif...
16540 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43  .#if INTEROP_INC
16550 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66  LUDE_ZIPVFS..#if
16560 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16570 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16580 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16590 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
165a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
165b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
165c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
165d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
165e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
165f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16600 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
16610 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 32  id zipvfsInit_v2
16620 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
16630 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16640 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16660 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16670 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16680 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16690 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
166a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
166b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
166c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
166d0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70   extern void zip
166e0 76 66 73 49 6e 69 74 5f 76 33 28 69 6e 74 20 72  vfsInit_v3(int r
166f0 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66  egDflt);..#endif
16700 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16710 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16720 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16730 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16740 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16750 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16760 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16770 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16780 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16790 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
167a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
167b0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
167c0 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c  3_progress_handl
167d0 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  er(IntPtr db, in
167e0 74 20 6f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f  t ops, SQLitePro
167f0 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75  gressCallback fu
16800 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
16810 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
16820 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16830 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16840 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16850 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16860 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16870 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16880 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
16890 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
168a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
168b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
168c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
168d0 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
168e0 72 69 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c  rizer(IntPtr db,
168f0 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
16900 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  rCallback func, 
16910 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
16920 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16930 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16940 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
16960 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16970 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16980 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16990 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
169a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
169b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
169c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
169d0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
169e0 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49  e3_update_hook(I
169f0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
16a00 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66  UpdateCallback f
16a10 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
16a20 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
16a30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16a40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16a50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16a60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16a70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16a80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16a90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16ab0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16ac0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16ad0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16ae0 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68  sqlite3_commit_h
16af0 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
16b00 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62  QLiteCommitCallb
16b10 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
16b20 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
16b30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16b40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16b50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16b60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16b70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16b80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16b90 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16ba0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16bb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16bc0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16bd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
16be0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61  tPtr sqlite3_tra
16bf0 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ce(IntPtr db, SQ
16c00 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
16c10 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
16c20 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f  vUser);....    /
16c30 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
16c40 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61  config() takes a
16c50 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
16c60 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
16c70 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
16c80 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
16c90 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
16ca0 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65  le calls that we
16cb0 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23   want to use...#
16cc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16cd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16ce0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16cf0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
16d00 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
16d10 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
16d20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16d30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16d40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16d50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16d60 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
16d70 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
16d80 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
16d90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16da0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
16db0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
16dc0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e  lite3_config_non
16dd0 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  e(SQLiteConfigOp
16de0 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69  sEnum op);....#i
16df0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16e00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16e10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16e20 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
16e30 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
16e40 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
16e50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16e60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16e70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16e80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16e90 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
16ea0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
16eb0 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
16ec0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16ed0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
16ee0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
16ef0 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28  ite3_config_int(
16f00 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
16f10 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
16f20 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
16f30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16f40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16f50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16f60 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
16f70 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
16f80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16f90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16fa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16fb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16fc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16fd0 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
16fe0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
16ff0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17000 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17010 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17020 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
17030 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43  nfig_log(SQLiteC
17040 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c  onfigOpsEnum op,
17050 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61   SQLiteLogCallba
17060 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
17070 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
17080 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17090 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
170a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
170b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
170c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
170d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
170e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
170f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17100 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17110 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17120 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17130 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
17140 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
17150 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
17160 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
17170 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
17180 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17190 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
171a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
171b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
171c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
171d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
171e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
171f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17200 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17210 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17220 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17230 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17240 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
17250 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
17260 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17270 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17290 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
172a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
172b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
172c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
172d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
172e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
172f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17300 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17310 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17320 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
17330 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
17340 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
17350 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
17360 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
17370 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17380 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
17390 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
173a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
173b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
173c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
173d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
173e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
173f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
17400 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
17410 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
17420 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
17430 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17450 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
17470 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17480 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
17490 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
174a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
174b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
174c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
174d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
174e0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
174f0 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
17500 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66  ename")]..#endif
17510 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17520 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17530 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
17540 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e  ilename_bytes(In
17550 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
17560 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
17570 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17580 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17590 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
175a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
175b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
175c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
175d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
175e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
175f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17600 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17610 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17620 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
17630 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
17640 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
17650 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17660 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17670 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17680 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17690 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
176a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
176b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
176c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
176d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
176e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
176f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17700 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17710 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
17720 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
17730 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
17740 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
17750 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66  Ptr pvParam, ref
17760 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
17770 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17780 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17790 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
177a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
177b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
177c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
177d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
177e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
177f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17800 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17810 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17820 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
17830 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
17840 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a  int nBytes);....
17850 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17860 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17870 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17880 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17890 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
178a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
178b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
178c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
178d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
178e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
178f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17900 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74   int sqlite3_get
17910 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50  _autocommit(IntP
17920 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
17930 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17940 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17950 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17960 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17970 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17980 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17990 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
179a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
179b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
179c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
179d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
179e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
179f0 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
17a00 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72  ult_codes(IntPtr
17a10 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b   db, int onoff);
17a20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17a30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17a40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17a50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17a60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17a70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17a80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17a90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17aa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17ab0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17ac0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17ad0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17ae0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72  Code sqlite3_err
17af0 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
17b00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17b10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17b20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17b30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17b40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17b50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17b60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17b70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17b80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17b90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17ba0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17bb0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17bc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
17bd0 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e  ended_errcode(In
17be0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
17bf0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17c00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17c10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17c20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17c30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17c40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17c50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17c60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17c70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17c80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17c90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17ca0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
17cb0 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43  str(SQLiteErrorC
17cc0 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e  ode rc); /* 3.7.
17cd0 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  15+ */....    //
17ce0 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c   Since sqlite3_l
17cf0 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  og() takes a var
17d00 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
17d10 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
17d20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
17d30 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
17d40 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
17d50 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  alls.  For now, 
17d60 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f  we are only expo
17d70 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74  sing a single st
17d80 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  ring, and..    /
17d90 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  / depend on the 
17da0 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74  caller to format
17db0 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69   the string...#i
17dc0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17dd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17de0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17df0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17e00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17e10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17e20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17e40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17e50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17e60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
17e70 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  oid sqlite3_log(
17e80 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17e90 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d  iErrCode, byte[]
17ea0 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69   zFormat);....#i
17eb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17ec0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17ed0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17ee0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17ef0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17f00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17f10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17f20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17f30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17f40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17f50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
17f60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
17f70 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
17f80 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rol(IntPtr db, b
17f90 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69  yte[] zDbName, i
17fa0 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41  nt op, IntPtr pA
17fb0 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  rg);....#if !PLA
17fc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17fd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17fe0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17ff0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18000 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18010 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18020 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18030 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18040 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18050 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18060 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
18070 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69  sqlite3_backup_i
18080 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44  nit(IntPtr destD
18090 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e  b, byte[] zDestN
180a0 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72  ame, IntPtr sour
180b0 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f  ceDb, byte[] zSo
180c0 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  urceName);....#i
180d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
180e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
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 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18110 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18120 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18130 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18150 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18160 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18170 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18180 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18190 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74  qlite3_backup_st
181a0 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ep(IntPtr backup
181b0 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d  , int nPage);...
181c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
181d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
181e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
181f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18200 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18210 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18220 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18230 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18240 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18250 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18260 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18270 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
18280 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
18290 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
182a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
182b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
182c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
182d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
182e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
182f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18300 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18310 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18320 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18330 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
18340 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18350 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
18360 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
18370 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
18380 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18390 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
183a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
183b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
183c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
183d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
183e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
183f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18400 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18410 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18420 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18430 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
18440 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  ode sqlite3_decl
18450 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20  are_vtab(IntPtr 
18460 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29  db, IntPtr zSQL)
18470 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18480 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18490 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
184a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
184b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
184c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
184d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
184e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
184f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18500 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18520 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18530 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74  ite3_mprintf(Int
18540 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72  Ptr format, __ar
18550 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e  glist);..    #en
18560 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
18570 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c  / SQLite API cal
18580 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f 76  ls that are prov
18590 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e  ided by "well-kn
185a0 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20  own" extensions 
185b0 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61 74  that may be stat
185c0 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c  ically..    // l
185d0 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20 53  inked with the S
185e0 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76  QLite core nativ
185f0 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e  e library curren
18600 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20  tly in use...   
18610 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69   #region extensi
18620 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  on sqlite api ca
18630 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  lls..#if INTEROP
18640 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
18650 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18660 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18670 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18680 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18690 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
186a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
186b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
186c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
186d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
186e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
186f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18700 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18710 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
18720 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  e_module(IntPtr 
18730 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c  db, IntPtr name,
18740 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64   ref sqlite3_mod
18750 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50  ule module, IntP
18760 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20  tr pClientData, 
18770 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
18780 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66  Destroy);....#if
18790 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
187a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
187b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
187c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
187d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
187e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
187f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18800 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18810 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18820 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18830 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
18840 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f  id sqlite3_dispo
18850 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  se_module(IntPtr
18860 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64   pModule);..#end
18870 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
18880 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
18890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
188e0 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65  gion sqlite inte
188f0 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e  rop api calls (.
18900 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
18910 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66  ework only)..#if
18920 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
18930 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
18940 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
18950 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18960 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18970 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18980 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
18990 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
189a0 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
189b0 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f  ntPtr db, ref lo
189c0 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  ng rowId);....  
189d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
189e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
189f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18a00 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
18a10 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69  e3_memory_used_i
18a20 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20  nterop(ref long 
18a30 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
18a40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18a50 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18a60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18a70 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
18a80 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
18a90 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73  _interop(int res
18aa0 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67  etFlag, ref long
18ab0 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
18ac0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18ad0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18ae0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18af0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
18b00 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
18b10 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
18b20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
18b30 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
18b40 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
18b50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18b60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
18b70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18b80 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
18b90 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
18ba0 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
18bb0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
18bc0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
18bd0 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
18be0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18bf0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
18c00 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
18c10 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
18c20 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ")]..    interna
18c30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18c40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18c50 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
18c60 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
18c70 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18c80 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61  ex, ref ulong va
18c90 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
18ca0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18cb0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18cc0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18cd0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
18ce0 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  lumn_double_inte
18cf0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
18d00 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
18d10 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
18d20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18d30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18d40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18d50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
18d60 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
18d70 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
18d80 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18d90 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
18da0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
18db0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18dc0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
18dd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18de0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
18df0 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
18e00 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
18e10 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
18e20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18e30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18e40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18e50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
18e60 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
18e70 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
18e80 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76  r p, ref Int64 v
18e90 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
18ea0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18eb0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18ec0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18ed0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
18ee0 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74  esult_double_int
18ef0 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
18f00 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  ext, ref double 
18f10 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
18f20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18f30 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18f40 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18f50 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
18f60 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74  result_int64_int
18f70 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
18f80 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76  ext, ref Int64 v
18f90 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
18fa0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18fb0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18fc0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18fd0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
18fe0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
18ff0 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f  le_module_intero
19000 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  p(..        IntP
19010 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
19020 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75  me, IntPtr pModu
19030 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  le, int iVersion
19040 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  , xCreate xCreat
19050 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e  e,..        xCon
19060 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78  nect xConnect, x
19070 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
19080 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63  ndex, xDisconnec
19090 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a  t xDisconnect,..
190a0 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
190b0 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e   xDestroy, xOpen
190c0 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78   xOpen, xClose x
190d0 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78  Close, xFilter x
190e0 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  Filter,..       
190f0 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45   xNext xNext, xE
19100 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e  of xEof, xColumn
19110 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64   xColumn, xRowId
19120 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65   xRowId, xUpdate
19130 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20   xUpdate,..     
19140 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e     xBegin xBegin
19150 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78  , xSync xSync, x
19160 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20  Commit xCommit, 
19170 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
19180 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46  ack,..        xF
19190 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
191a0 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61  dFunction, xRena
191b0 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76  me xRename, xSav
191c0 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e  epoint xSavepoin
191d0 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c  t,..        xRel
191e0 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78  ease xRelease, x
191f0 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
19200 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70  backTo, IntPtr p
19210 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20  ClientData,..   
19220 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64       xDestroyMod
19230 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ule xDestroyModu
19240 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  le);..#endif..  
19250 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f    // PLATFORM_CO
19260 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
19270 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
19280 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  RD..    #endregi
19290 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
192f0 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65  gion Native Dele
19300 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  gates..#if INTER
19310 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
19320 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19330 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19340 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
19350 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
19360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
19380 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
19390 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
193a0 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d  orCode xCreate(.
193b0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
193c0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
193d0 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
193e0 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
193f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
19400 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
19410 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
19420 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
19430 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
19440 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
19450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19490 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
194a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
194b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
194c0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
194d0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
194e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
194f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
19500 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
19510 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
19520 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
19530 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
19540 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
19550 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
19560 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
19570 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
19580 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
19590 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
195a0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
195b0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
195c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
19610 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19620 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19630 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
19640 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
19650 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19660 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
19670 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
19680 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
19690 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
196a0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
196b0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
196c0 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
196d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
196e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
19730 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19740 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19750 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
19760 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
19770 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19780 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
19790 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
197a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
197b0 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20   xDisconnect(.. 
197c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
197d0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
197e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19830 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19840 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19850 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
19860 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
19870 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19880 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
19890 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
198a0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
198b0 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
198c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
198d0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
198e0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
198f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
19940 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19950 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
19960 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
19970 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
19980 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19990 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
199a0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
199b0 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28  ErrorCode xOpen(
199c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
199d0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
199e0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72   ref IntPtr pCur
199f0 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
19a00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19a50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19a60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19a70 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
19a80 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
19a90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19aa0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
19ab0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
19ac0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
19ad0 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a  orCode xClose(..
19ae0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
19af0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
19b00 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b50 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
19b60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19b70 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
19b80 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
19b90 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
19ba0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
19bb0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
19bc0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
19bd0 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65  ErrorCode xFilte
19be0 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r(..        IntP
19bf0 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
19c00 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c       int idxNum,
19c10 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
19c20 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20   idxStr,..      
19c30 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
19c40 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
19c50 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
19cb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19cc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19cd0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
19ce0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
19cf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19d00 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
19d10 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
19d20 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
19d30 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
19d40 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
19d50 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
19d60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19db0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19dc0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19dd0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
19de0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
19df0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19e00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
19e10 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
19e20 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d  egate int xEof(.
19e30 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19e40 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
19e50 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
19e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ea0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
19eb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19ec0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
19ed0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
19ee0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
19ef0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19f00 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
19f10 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
19f20 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75  eErrorCode xColu
19f30 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  mn(..        Int
19f40 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
19f50 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
19f60 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
19f70 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29  int index..    )
19f80 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fd0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
19fe0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19ff0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1a000 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1a010 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1a020 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a030 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1a040 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1a050 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
1a060 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  wId(..        In
1a070 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
1a080 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
1a090 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
1a0a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a100 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a110 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1a120 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1a130 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1a140 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1a150 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1a160 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1a170 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
1a180 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1a190 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1a1a0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
1a1b0 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1a1c0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
1a1d0 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
1a1e0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a230 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1a240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1a260 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1a270 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1a280 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a290 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1a2a0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1a2b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
1a2c0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  gin(..        In
1a2d0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1a2e0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a330 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1a340 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a350 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1a360 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1a370 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1a380 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a390 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1a3a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1a3b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
1a3c0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ync(..        In
1a3d0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1a3e0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1a440 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a450 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1a460 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1a470 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1a480 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a490 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1a4a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1a4b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
1a4c0 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
1a4d0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1a4e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a530 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a540 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a550 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a560 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a570 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a580 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a5a0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a5b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a5c0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
1a5d0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1a5e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1a5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a640 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a650 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a660 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a670 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a680 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a690 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a6a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a6b0 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e  ate int xFindFun
1a6c0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
1a6d0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1a6e0 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c         int nArg,
1a6f0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1a700 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
1a710 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62   ref SQLiteCallb
1a720 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ack callback,.. 
1a730 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
1a740 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20  r pUserData..   
1a750 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1a7b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a7c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1a7d0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1a7e0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1a7f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a800 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1a810 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1a820 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1a830 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
1a840 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1a850 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
1a860 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  New..    );.... 
1a870 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a8c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a8d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a8e0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1a8f0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1a900 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a910 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1a920 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1a930 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1a940 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e  orCode xSavepoin
1a950 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1a960 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1a970 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
1a980 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
1a990 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a9e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a9f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1aa00 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1aa10 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1aa20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1aa30 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1aa40 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1aa50 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1aa60 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a  Code xRelease(..
1aa70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1aa80 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
1aa90 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1aaa0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1ab00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ab10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ab20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1ab30 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1ab40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ab50 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1ab60 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1ab70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1ab80 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
1ab90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1aba0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1abb0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
1abc0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1ac20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ac30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ac40 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1ac50 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1ac60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ac70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ac80 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1ac90 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64  void xDestroyMod
1aca0 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65  ule(IntPtr pClie
1acb0 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66  ntData);..#endif
1acc0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1acd0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1ad30 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74  on Native Struct
1ad40 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ures..#if INTERO
1ad50 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
1ad60 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1ad70 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1ad80 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1ad90 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1ada0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
1adb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
1adc0 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69  ublic int iVersi
1add0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
1ade0 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65  lic xCreate xCre
1adf0 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
1ae00 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43  blic xConnect xC
1ae10 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
1ae20 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64   public xBestInd
1ae30 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a  ex xBestIndex;..
1ae40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1ae50 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
1ae60 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
1ae70 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79   public xDestroy
1ae80 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20   xDestroy;..    
1ae90 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e      public xOpen
1aea0 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20   xOpen;..       
1aeb0 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78   public xClose x
1aec0 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  Close;..        
1aed0 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78  public xFilter x
1aee0 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  Filter;..       
1aef0 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e   public xNext xN
1af00 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ext;..        pu
1af10 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d  blic xEof xEof;.
1af20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1af30 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b  xColumn xColumn;
1af40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1af50 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d   xRowId xRowId;.
1af60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1af70 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 3b  xUpdate xUpdate;
1af80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1af90 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d   xBegin xBegin;.
1afa0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1afb0 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20  xSync xSync;..  
1afc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f        public xCo
1afd0 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20  mmit xCommit;.. 
1afe0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
1aff0 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63  ollback xRollbac
1b000 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  k;..        publ
1b010 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ic xFindFunction
1b020 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d   xFindFunction;.
1b030 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b040 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b  xRename xRename;
1b050 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65  ..        /* The
1b060 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   methods above a
1b070 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20  re in version 1 
1b080 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d  of the sqlite3_m
1b090 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
1b0a0 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65  * object.  Those
1b0b0 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76   below are for v
1b0c0 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65  ersion 2 and gre
1b0d0 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ater. */..      
1b0e0 20 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f    public xSavepo
1b0f0 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d  int xSavepoint;.
1b100 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b110 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
1b120 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1b130 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  ic xRollbackTo x
1b140 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20  RollbackTo;..   
1b150 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1b1b0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1b1c0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1b1d0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1b1e0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1b1f0 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  vtab..    {..   
1b200 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
1b210 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tr pModule;..   
1b220 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1b230 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47  nRef; /* NO LONG
1b240 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  ER USED */..    
1b250 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1b260 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
1b270 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
1b280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
1b2d0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
1b2e0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
1b2f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b300 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
1b310 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
1b320 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
1b330 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d  c IntPtr pVTab;.
1b340 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b3a0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1b3b0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1b3c0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
1b3d0 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
1b3e0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
1b3f0 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
1b400 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
1b410 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
1b420 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
1b430 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
1b440 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
1b450 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
1b460 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
1b470 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
1b480 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b490 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20   if (constraint 
1b4a0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1b4b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b4c0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
1b4d0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43   = constraint.iC
1b4e0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
1b4f0 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e          op = con
1b500 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20  straint.op;..   
1b510 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61               usa
1b520 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  ble = constraint
1b530 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  .usable;..      
1b540 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f            iTermO
1b550 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69  ffset = constrai
1b560 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt.iTermOffset;.
1b570 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b580 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b590 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b5e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1b5f0 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
1b600 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
1b610 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
1b620 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  tOp op;..       
1b630 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
1b640 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ble;..        pu
1b650 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66  blic int iTermOf
1b660 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  fset;..    }....
1b670 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b6c0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
1b6d0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
1b6e0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
1b6f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
1b700 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
1b710 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a  orderby..    {..
1b720 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1b730 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
1b740 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
1b750 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72     SQLiteIndexOr
1b760 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20  derBy orderBy.. 
1b770 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1b780 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1b790 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1b7a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
1b7b0 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d  rderBy != null).
1b7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7e0 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42  iColumn = orderB
1b7f0 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  y.iColumn;..    
1b800 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63              desc
1b810 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b   = orderBy.desc;
1b820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b830 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1b840 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b890 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b8a0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
1b8b0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
1b8c0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b8d0 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a   byte desc;   /*
1b8e0 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
1b8f0 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
1b900 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
1b910 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b960 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
1b970 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
1b980 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
1b990 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
1b9a0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
1b9b0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
1b9c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1b9d0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
1b9e0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
1b9f0 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
1ba00 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
1ba10 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e  straintUsage con
1ba20 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
1ba30 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1ba40 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1ba50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1ba60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
1ba70 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
1ba80 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1ba90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1baa0 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78         argvIndex
1bab0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
1bac0 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20  ge.argvIndex;.. 
1bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
1bae0 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  mit = constraint
1baf0 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20  Usage.omit;..   
1bb00 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bb10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1bb20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1bb70 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61      public int a
1bb80 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20  rgvIndex; /* if 
1bb90 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  >0, constraint i
1bba0 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
1bbb0 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20  o xFilter */..  
1bbc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
1bbd0 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44  e omit;     /* D
1bbe0 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
1bbf0 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
1bc00 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  raint */..    }.
1bc10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc60 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
1bc70 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
1bc80 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
1bc90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bca0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
1bcb0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a  ex_info..    {..
1bcc0 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
1bcd0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
1bce0 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72  blic int nConstr
1bcf0 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20  aint; /* Number 
1bd00 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43  of entries in aC
1bd10 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
1bd20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1bd30 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b  Ptr aConstraint;
1bd40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1bd50 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20   int nOrderBy;  
1bd60 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65    /* Number of e
1bd70 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72  ntries in aOrder
1bd80 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  By */..        p
1bd90 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72  ublic IntPtr aOr
1bda0 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20  derBy;..        
1bdb0 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20  /* Outputs */.. 
1bdc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1bdd0 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
1bde0 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20  Usage;..        
1bdf0 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75  public int idxNu
1be00 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  m;           /* 
1be10 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69  Number used to i
1be20 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65  dentify the inde
1be30 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  x */..        pu
1be40 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53  blic string idxS
1be50 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74  tr;        /* St
1be60 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f  ring, possibly o
1be70 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c  btained from sql
1be80 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a  ite3_malloc */..
1be90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1bea0 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
1beb0 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
1bec0 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
1bed0 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
1bee0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1bef0 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43  lic int orderByC
1bf00 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75  onsumed;  /* Tru
1bf10 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
1bf20 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a  lready ordered *
1bf30 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1bf40 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74  c double estimat
1bf50 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d  edCost; /* Estim
1bf60 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
1bf70 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f  ng this index */
1bf80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1bf90 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52   long estimatedR
1bfa0 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61  ows;   /* Estima
1bfb0 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  ted number of ro
1bfc0 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a  ws returned */..
1bfd0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
1bfe0 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
1bff0 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73  idxFlags; /* Mas
1c000 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45  k of SQLITE_INDE
1c010 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a  X_SCAN_* flags *
1c020 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1c030 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20  c long colUsed; 
1c040 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
1c050 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e  : Mask of column
1c060 73 20 75 73 65 64 20 62 79 20 73 74 61 74 65 6d  s used by statem
1c070 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23  ent */..    }..#
1c080 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
1c090 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
1c0a0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
1c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1c100 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f   #region .NET Co
1c110 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
1c120 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c 48  (only) CriticalH
1c130 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66  andle Class..#if
1c140 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1c150 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e  TFRAMEWORK..  in
1c160 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
1c170 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
1c180 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
1c190 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69  le..  {..    pri
1c1a0 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f  vate bool _isClo
1c1b0 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63  sed;..    protec
1c1c0 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c  ted IntPtr handl
1c1d0 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  e;....    protec
1c1e0 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ted CriticalHand
1c1f0 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69  le(IntPtr invali
1c200 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20  dHandleValue).. 
1c210 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
1c220 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64  le = invalidHand
1c230 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  leValue;..      
1c240 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73  _isClosed = fals
1c250 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
1c260 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65   ~CriticalHandle
1c270 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
1c280 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
1c290 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1c2a0 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61  rivate void Clea
1c2b0 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nup()..    {..  
1c2c0 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65      if (!IsClose
1c2d0 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  d)..      {..   
1c2e0 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
1c2f0 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
1c300 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61       if (!IsInva
1c310 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lid)..        {.
1c320 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61  .          Relea
1c330 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  seHandle();..   
1c340 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
1c350 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
1c360 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1c370 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
1c380 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
1c390 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  Close()..    {..
1c3a0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
1c3b0 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
1c3c0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
1c3d0 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d  ispose()..    {.
1c3e0 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
1c3f0 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
1c400 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
1c410 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
1c420 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
1c430 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
1c440 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20   Cleanup();..   
1c450 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
1c460 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f  ted abstract boo
1c470 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1c480 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  );....    protec
1c490 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64  ted void SetHand
1c4a0 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29  le(IntPtr value)
1c4b0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68  ..    {..      h
1c4c0 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a  andle = value;..
1c4d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
1c4e0 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64  lic void SetHand
1c4f0 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20  leAsInvalid().. 
1c500 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43     {..      _isC
1c510 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
1c520 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
1c530 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
1c540 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
1c550 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73  blic bool IsClos
1c560 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ed..    {..     
1c570 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69   get { return _i
1c580 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20  sClosed; }..    
1c590 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
1c5a0 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73  abstract bool Is
1c5b0 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a  Invalid..    {..
1c5c0 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20        get;..    
1c5d0 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66  }....  }..#endif
1c5e0 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
1c5f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c640 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1c650 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1c660 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  nHandle Class.. 
1c670 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68     // Handles th
1c680 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61  e unmanaged data
1c690 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e  base pointer, an
1c6a0 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  d provides final
1c6b0 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20  ization..    // 
1c6c0 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d  support for it..
1c6d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
1c6e0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
1c6f0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1c700 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
1c710 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53  le..    {..#if S
1c720 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26  QLITE_STANDARD &
1c730 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  & !PLATFORM_COMP
1c740 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c750 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64        internal d
1c760 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f  elegate void Clo
1c770 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
1c780 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
1c790 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
1c7a0 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
1c7b0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
1c7c0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1c7d0 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65  tatic CloseConne
1c7e0 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c  ctionCallback cl
1c7f0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d  oseConnection =.
1c800 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1c810 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
1c820 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  nection;..#endif
1c830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c880 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
1c890 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c8a0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
1c8b0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
1c8c0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
1c8d0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
1c8e0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1c8f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c940 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
1c950 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d  ol ownHandle;...
1c960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1c9c0 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
1c9d0 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
1c9e0 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
1c9f0 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
1ca00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ca10 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
1ca20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1ca30 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1ca40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ca50 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1ca60 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
1ca70 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1ca80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ca90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1caa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
1cab0 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
1cac0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1cad0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1cae0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1caf0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1cb00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1cb10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1cb60 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
1cb70 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1cb80 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  andle(IntPtr db,
1cb90 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29   bool ownHandle)
1cba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1cbb0 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d  this(ownHandle).
1cbc0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1cbd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1cbe0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1cbf0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1cc00 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1cc10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1cc30 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20  his.ownHandle = 
1cc40 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
1cc50 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1cc60 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
1cc70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1cc80 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1cc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1cce0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1ccf0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1cd00 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e(bool ownHandle
1cd10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1cd20 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
1cd30 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
1cd40 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1cd50 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1cd60 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
1cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1cd80 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
1cd90 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
1cda0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1cdb0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1cdc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cdd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1ce20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1ce30 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1ce40 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1ce50 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1ce60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ce70 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1ce80 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1ce90 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1cea0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ceb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1cec0 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
1ced0 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
1cee0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1cef0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1cf00 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1cf10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1cf20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1cf30 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1cf40 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
1cf50 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
1cf60 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
1cf70 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
1cf80 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
1cf90 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
1cfa0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
1cfb0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1cfc0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
1cfd0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cff0 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
1d000 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
1d010 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
1d020 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d030 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
1d040 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1d050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d060 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
1d070 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
1d080 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
1d090 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1d0a0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1d0b0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1d0c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d0d0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1d0e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1d100 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1d110 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1d120 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1d130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d140 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1d150 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1d160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d170 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
1d180 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c  nection: {0}", l
1d190 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
1d1a0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1d1b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1d1d0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1d1e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d1f0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1d200 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
1d210 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1d220 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1d230 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d250 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
1d260 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d280 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d290 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1d2a0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
1d2b0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61  nection(this, ha
1d2c0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
1d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2e0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
1d2f0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1d300 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d320 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
1d330 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1d340 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1d350 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
1d360 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
1d370 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1d380 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1d390 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1d3a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1d3b0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1d3c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1d3d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1d3e0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1d3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1d400 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1d410 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1d420 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1d430 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1d440 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1d450 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1d460 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1d470 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d490 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1d4a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1d4c0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
1d4d0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
1d4e0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d500 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1d510 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d530 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
1d540 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63  ection: {0}, exc
1d550 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
1d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d570 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
1d580 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1d590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d5a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1d5b0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1d5c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d5e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1d5f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1d600 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
1d610 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1d620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1d640 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1d650 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1d660 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1d670 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d680 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1d690 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
1d6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d6b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d6c0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
1d6d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d6e0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
1d6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1d700 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1d710 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1d720 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d770 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
1d780 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
1d790 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
1d7a0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
1d7b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d7c0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
1d7d0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
1d7e0 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65   DebugData.conne
1d7f0 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20  ctionCount);..  
1d800 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1d810 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d860 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1d870 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e  blic bool OwnHan
1d880 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
1d890 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
1d8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1d8b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1d8c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1d8e0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1d8f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1d900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1d920 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b  eturn ownHandle;
1d930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d940 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d950 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1d960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1d9c0 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
1d9d0 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
1d9e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d9f0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
1da00 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1da10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1da20 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1da30 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1da40 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1da60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1da70 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
1da80 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
1da90 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1daa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1dab0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1dac0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1dad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db10 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
1db20 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
1db30 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
1db40 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
1db50 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1db60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1db70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1db80 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1db90 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1dba0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1dbc0 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
1dbd0 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
1dbe0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1dbf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
1dc00 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1dc10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc60 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1dc70 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  n SQLiteStatemen
1dc80 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  tHandle Class.. 
1dc90 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
1dca0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
1dcb0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
1dcc0 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65  d SQLite stateme
1dcd0 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nts...    intern
1dce0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
1dcf0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1dd00 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
1dd10 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
1dd20 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1dd30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1dd40 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
1dd50 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
1dd60 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1dd70 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
1dd80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddd0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1dde0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
1ddf0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1de00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1de10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1de60 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
1de70 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
1de80 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61  IntPtr(SQLiteSta
1de90 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d  tementHandle stm
1dea0 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
1deb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1dec0 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tmt != null)..  
1ded0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1dee0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1def0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1df00 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1df10 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29   (stmt.syncRoot)
1df20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1df30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df50 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
1df60 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
1df70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1df80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1df90 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1dfa0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
1dfb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e000 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1e010 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
1e020 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
1e030 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1e040 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
1e050 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  tr stmt)..      
1e060 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
1e070 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1e080 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e090 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1e0a0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1e0b0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1e0c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1e0e0 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1e100 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d  etHandle(stmt);.
1e110 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1e120 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1e130 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e180 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1e190 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1e1a0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
1e1b0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
1e1c0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1e1d0 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
1e1e0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1e1f0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
1e200 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
1e210 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
1e220 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1e230 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1e240 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e290 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
1e2a0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
1e2b0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
1e2c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1e2d0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1e2e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1e2f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e300 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e310 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1e320 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
1e330 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
1e340 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
1e350 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1e360 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
1e370 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
1e380 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
1e390 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
1e3a0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1e3c0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
1e3d0 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
1e3e0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
1e3f0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1e400 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1e410 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1e420 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1e430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e450 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
1e460 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
1e470 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
1e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e490 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
1e4a0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
1e4b0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
1e4d0 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
1e4e0 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
1e4f0 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
1e500 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e510 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1e520 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1e530 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e550 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
1e560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e570 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1e580 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e590 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e5a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
1e5b0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1e5c0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1e5d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5f0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1e600 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
1e610 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  t(cnn, handle);.
1e620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e630 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1e640 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1e650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e660 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e670 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1e680 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1e690 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1e6a0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1e6b0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
1e6c0 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d  DebugData.statem
1e6d0 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  entCount);..#end
1e6e0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
1e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e700 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
1e710 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1e720 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
1e730 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1e740 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1e750 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
1e760 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
1e770 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1e780 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
1e790 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
1e7a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1e7b0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
1e7c0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1e7d0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1e7e0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e810 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1e820 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1e830 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1e840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e850 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1e860 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1e870 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1e890 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1e8a0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1e8b0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8d0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1e8e0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1e8f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1e900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1e910 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1e920 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e930 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1e940 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1e950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1e960 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1e970 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1e980 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e990 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1e9a0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1e9b0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e9e0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1e9f0 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1ea00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ea10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1ea20 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1ea30 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1ea40 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1ea50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1ea60 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1ea70 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ea80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1ead0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1eae0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1eaf0 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1eb00 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1eb10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1eb20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1eb30 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
1eb40 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f  Data.statementCo
1eb50 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
1eb60 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1eb70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ebc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1ebd0 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
1ebe0 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
1ebf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1ec00 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1ec10 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1ec20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ec30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ec40 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1ec50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1ec60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ec70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec80 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
1ec90 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
1eca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ecb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ecc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1ecd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed20 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1ed30 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1ed40 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
1ed50 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
1ed60 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1ed70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ed80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1ed90 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1eda0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1edb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1edc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
1edd0 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
1ede0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1edf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
1ee00 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
1ee10 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1ee20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ee70 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
1ee80 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
1ee90 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
1eea0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
1eeb0 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
1eec0 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
1eed0 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e   backup objects.
1eee0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1eef0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
1ef00 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a  teBackupHandle :
1ef10 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
1ef20 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
1ef30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ef40 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1ef50 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
1ef60 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
1ef70 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
1ef80 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1ef90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1efe0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
1eff0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1f000 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
1f010 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f060 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f070 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
1f080 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
1f090 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
1f0a0 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  le backup)..    
1f0b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f0c0 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d     if (backup !=
1f0d0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1f0e0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1f0f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f100 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1f110 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b        lock (back
1f120 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  up.syncRoot)..#e
1f130 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1f140 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f150 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1f160 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c  urn backup.handl
1f170 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1f180 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f190 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f1a0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1f1b0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
1f1c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1f1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f210 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
1f220 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61  nternal SQLiteBa
1f230 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74  ckupHandle(SQLit
1f240 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1f250 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61  e cnn, IntPtr ba
1f260 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20  ckup)..         
1f270 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
1f280 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1f290 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f2a0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1f2b0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1f2c0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1f2d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1f2e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1f2f0 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
1f300 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1f310 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a  andle(backup);..
1f320 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f330 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1f340 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1f390 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
1f3a0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
1f3b0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
1f3c0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
1f3d0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
1f3e0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1f3f0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
1f400 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
1f410 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
1f420 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
1f430 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1f440 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1f450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f4a0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
1f4b0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
1f4c0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
1f4d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f4e0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1f4f0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
1f500 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f510 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1f520 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
1f530 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
1f540 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
1f550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f560 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
1f570 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
1f580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f590 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1f5a0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1f5b0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1f5c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1f5d0 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
1f5e0 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
1f5f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
1f600 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1f610 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1f620 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f640 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1f650 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1f660 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
1f670 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
1f680 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1f690 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
1f6a0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
1f6b0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
1f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6d0 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
1f6e0 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
1f6f0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1f700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f710 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1f720 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1f730 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f750 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
1f760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f770 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1f780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f790 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f7a0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
1f7b0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1f7c0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1f7d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7f0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
1f800 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
1f810 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
1f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f830 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
1f840 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1f850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f860 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1f870 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
1f880 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8a0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1f8b0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
1f8c0 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
1f8d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
1f8e0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1f8f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1f900 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1f910 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
1f920 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1f930 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1f940 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1f950 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1f960 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
1f970 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1f980 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1f990 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1f9a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
1f9b0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
1f9c0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
1f9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1f9e0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1f9f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fa00 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1fa10 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
1fa20 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
1fa30 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa50 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1fa60 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa80 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
1fa90 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  up: {0}, excepti
1faa0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
1fab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fac0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
1fad0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1faf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb00 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1fb10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fb20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1fb30 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1fb40 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1fb50 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
1fb60 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1fb70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fb80 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1fb90 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1fba0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1fbd0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1fbe0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
1fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1fc00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1fc10 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1fc20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1fc30 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
1fc40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1fc50 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1fc60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1fc70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1fcc0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1fcd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1fce0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
1fcf0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
1fd00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1fd10 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
1fd20 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
1fd30 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75  ugData.backupCou
1fd40 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1fd50 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1fd60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fdb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1fdc0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
1fdd0 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
1fde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1fdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1fe00 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1fe10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fe20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe30 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1fe40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1fe50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe70 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
1fe80 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
1fe90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fea0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1feb0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1fec0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ff10 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
1ff20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1ff30 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
1ff40 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
1ff50 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1ff60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ff70 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1ff80 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1ff90 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ffa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ffb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
1ffc0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
1ffd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1ffe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1fff0 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
20000 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..