System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b7b8d615ac574648de5b73e84b48f08e36dbda47:


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: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
0ad0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0ae0: 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
0af0: 73 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79  s the dictionary
0b00: 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
0b10: 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66  he read counts f
0b20: 6f 72 20 65 61 63 68 20 6f 66 20 74 68 65 0d 0a  or each of the..
0b30: 20 20 20 20 20 20 2f 2f 2f 20 72 75 6e 74 69 6d        /// runtim
0b40: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
0b50: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 65 73 65  settings.  These
0b60: 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73 65   numbers are use
0b70: 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d  d for debugging.
0b80: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74  .      /// and t
0b90: 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20  esting purposes 
0ba0: 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  only...      ///
0bb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0bc0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
0bd0: 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65   void Initialize
0be0: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
0bf0: 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  s()..      {..  
0c00: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
0c10: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
0c20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
0c30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
0c40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
0c50: 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20  OTE: Create the 
0c60: 6c 69 73 74 20 6f 66 20 73 74 61 74 69 73 74 69  list of statisti
0c70: 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e  cs that will con
0c80: 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
0c90: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
0ca0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
0cb0: 20 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61   each setting va
0cc0: 6c 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61  lue has been rea
0cd0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
0ce0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
0cf0: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
0d00: 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c  eadCounts == nul
0d10: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
0d20: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
0d30: 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69  dCounts = new Di
0d40: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
0d50: 20 69 6e 74 3e 28 29 3b 0d 0a 20 20 20 20 20 20   int>();..      
0d60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
0d70: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0dc0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
0dd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0de0: 2f 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74  /// Increments t
0df0: 68 65 20 72 65 61 64 20 63 6f 75 6e 74 20 66 6f  he read count fo
0e00: 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
0e10: 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
0e20: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ation..      ///
0e30: 20 73 65 74 74 69 6e 67 2e 20 20 54 68 65 73 65   setting.  These
0e40: 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73 65   numbers are use
0e50: 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 20  d for debugging 
0e60: 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72 70  and testing purp
0e70: 6f 73 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oses..      /// 
0e80: 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  only...      ///
0e90: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0ea0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0eb0: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
0ec0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
0ed0: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 62 65  f the setting be
0ee0: 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20  ing read...     
0ef0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
0f00: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
0f10: 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65 6e  ic void Incremen
0f20: 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  tSettingReadCoun
0f30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  t(..          st
0f40: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
0f50: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
0f60: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
0f70: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
0f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
0f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
0fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
0fb0: 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73  / NOTE: Update s
0fc0: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
0fd0: 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  is setting value
0fe0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
0ff0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1000: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65     if (settingRe
1010: 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c  adCounts != null
1020: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1030: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1040: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1050: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1060: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
1070: 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47  gReadCounts.TryG
1080: 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75  etValue(name, ou
1090: 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20  t count))..     
10a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b0: 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f     settingReadCo
10c0: 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75  unts[name] = cou
10d0: 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20  nt + 1;..       
10e0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
10f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1100: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
1110: 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e  ReadCounts.Add(n
1120: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  ame, 1);..      
1130: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1140: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
1150: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
1160: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
1170: 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65  #endif..  #endre
1180: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
11e0: 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68  gion Helper Meth
11f0: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
1200: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
1210: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74  >..  /// This st
1220: 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69  atic class provi
1230: 64 65 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73  des some methods
1240: 20 74 68 61 74 20 61 72 65 20 73 68 61 72 65 64   that are shared
1250: 20 62 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20   between the..  
1260: 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61  /// native libra
1270: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e  ry pre-loader an
1280: 64 20 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e  d other classes.
1290: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
12a0: 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  y>..  internal s
12b0: 74 61 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70  tatic class Help
12c0: 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a  erMethods..  {..
12d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
12e0: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
12f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1300: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
1310: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
1320: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
1330: 69 63 20 3c 73 65 65 20 63 72 65 66 3d 22 69 73  ic <see cref="is
1340: 4d 6f 6e 6f 22 20 2f 3e 20 66 69 65 6c 64 2e 0d  Mono" /> field..
1350: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
1360: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
1370: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
1380: 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74  only object stat
1390: 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  icSyncRoot = new
13a0: 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20   object();....  
13b0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
13f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1400: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1410: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
1420: 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c 79 20  is type is only 
1430: 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72 75 6e  present when run
1440: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
1450: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1460: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1470: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
1480: 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52 75  ly string MonoRu
1490: 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f 6e  ntimeType = "Mon
14a0: 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20  o.Runtime";.... 
14b0: 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1500: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1510: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b  ry>..      /// K
1520: 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20 77 68  eeps track of wh
1530: 65 74 68 65 72 20 77 65 20 61 72 65 20 72 75 6e  ether we are run
1540: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49  ning on Mono.  I
1550: 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69  nitially null, i
1560: 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t is..      /// 
1570: 73 65 74 20 62 79 20 74 68 65 20 3c 73 65 65 20  set by the <see 
1580: 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e  cref="IsMono" />
1590: 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66   method on its f
15a0: 69 72 73 74 20 63 61 6c 6c 2e 20 20 4c 61 74 65  irst call.  Late
15b0: 72 2c 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  r, it..      ///
15c0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 76 65 72   is returned ver
15d0: 62 61 74 69 6d 20 62 79 20 74 68 65 20 3c 73 65  batim by the <se
15e0: 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22 20  e cref="IsMono" 
15f0: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1600: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1610: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1620: 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 69 73 4d  static bool? isM
1630: 6f 6e 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ono = null;..   
1640: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1650: 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
1690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
16b0: 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64  n Private Method
16c0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
16d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16e0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
16f0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73  ther or not this
1700: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
1710: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
1720: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1730: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
1740: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1750: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
1760: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73  this assembly is
1770: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f   running on Mono
1780: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
1790: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
17a0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
17b0: 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20  ol IsMono()..   
17c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17d0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
17e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17f0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
1800: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1810: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1820: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
1830: 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Mono == null).. 
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54       isMono = (T
1860: 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f  ype.GetType(Mono
1870: 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20  RuntimeType) != 
1880: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
1890: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
18a0: 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b  rn (bool)isMono;
18b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
18d0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
18e0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
1900: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
1910: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1920: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1930: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  e;..      }..   
1940: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1950: 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
19b0: 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f  n Internal Metho
19c0: 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ds..      /// <s
19d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
19e0: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
19f0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
1a00: 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67 20  cess is running 
1a10: 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57 69  on one of the Wi
1a20: 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ndows..      ///
1a30: 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73   [sub-]platforms
1a40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1a50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1a60: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1a70: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1a80: 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e   when running on
1a90: 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77   Windows; otherw
1aa0: 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
1ab0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1ac0: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
1ad0: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 57   static bool IsW
1ae0: 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20 20  indows()..      
1af0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c 61  {..          Pla
1b00: 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d  tformID platform
1b10: 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  Id = Environment
1b20: 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66  .OSVersion.Platf
1b30: 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  orm;....        
1b40: 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49    if ((platformI
1b50: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
1b60: 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20  Win32S) ||..    
1b70: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
1b80: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
1b90: 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73  mID.Win32Windows
1ba0: 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
1bb0: 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20      (platformId 
1bc0: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
1bd0: 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20  n32NT) ||..     
1be0: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
1bf0: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
1c00: 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20  ID.WinCE))..    
1c10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1c30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ue;..          }
1c40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
1c50: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
1c60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
1cc0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1cd0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1ce0: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
1cf0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
1d00: 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e  <see cref="Strin
1d10: 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74  g.Format(IFormat
1d20: 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e 67 2c  Provider,String,
1d30: 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65  Object[])" /> me
1d40: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
1d50: 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73   On Mono, it has
1d60: 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65 74   to call the met
1d70: 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77 69 74  hod overload wit
1d80: 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20  hout the..      
1d90: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1da0: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 22 20  FormatProvider" 
1db0: 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 64 75  /> parameter, du
1dc0: 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f  e to a bug in Mo
1dd0: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
1de0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1df0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e00: 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20  ="provider">..  
1e10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1e20: 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75 72 65  used for culture
1e30: 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74  -specific format
1e40: 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ting...      ///
1e50: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e60: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1e70: 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20  ="format">..    
1e80: 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74    /// The format
1e90: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
1ea0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1eb0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ec0: 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20  ame="args">..   
1ed0: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
1ee0: 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f 20 66  the objects to f
1ef0: 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  ormat...      //
1f00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f10: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
1f30: 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e  esulting string.
1f40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
1f50: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
1f60: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
1f70: 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d 61  ring StringForma
1f80: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46  t(..          IF
1f90: 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72  ormatProvider pr
1fa0: 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20  ovider,..       
1fb0: 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74     string format
1fc0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70 61 72  ,..          par
1fd0: 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67  ams object[] arg
1fe0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
1ff0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2000: 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29     if (IsMono())
2010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2020: 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f  return String.Fo
2030: 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61 72 67  rmat(format, arg
2040: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65  s);..          e
2050: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2060: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
2070: 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64 65 72  .Format(provider
2080: 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b  , format, args);
2090: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
20a0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
20b0: 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
20c0: 0d 0a 20 20 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 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e  /....  #region N
2120: 61 74 69 76 65 20 4c 69 62 72 61 72 79 20 48 65  ative Library He
2130: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f  lper Class..  //
2140: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
2150: 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63  // This static c
2160: 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20 61 20  lass provides a 
2170: 74 68 69 6e 20 77 72 61 70 70 65 72 20 61 72 6f  thin wrapper aro
2180: 75 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  und the native l
2190: 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f  ibrary..  /// lo
21a0: 61 64 69 6e 67 20 66 65 61 74 75 72 65 73 20 6f  ading features o
21b0: 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  f the underlying
21c0: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f   platform...  //
21d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
21e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21f0: 63 6c 61 73 73 20 4e 61 74 69 76 65 4c 69 62 72  class NativeLibr
2200: 61 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a  aryHelper..  {..
2210: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2220: 69 76 61 74 65 20 44 65 6c 65 67 61 74 65 73 0d  ivate Delegates.
2230: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2240: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2250: 54 68 69 73 20 64 65 6c 65 67 61 74 65 20 69 73  This delegate is
2260: 20 75 73 65 64 20 74 6f 20 77 72 61 70 20 74 68   used to wrap th
2270: 65 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61  e concept of loa
2280: 64 69 6e 67 20 61 20 6e 61 74 69 76 65 0d 0a 20  ding a native.. 
2290: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
22a0: 2c 20 62 61 73 65 64 20 6f 6e 20 61 20 66 69 6c  , based on a fil
22b0: 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65 74 75  e name, and retu
22c0: 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64 65 64  rning the loaded
22d0: 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f   module..      /
22e0: 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  // handle...    
22f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2300: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
2310: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
2320: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
2330: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
2340: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
2350: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
2360: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2370: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
2380: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
2390: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
23a0: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
23b0: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
23c0: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
23d0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
23e0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
23f0: 70 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65  private delegate
2400: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
2410: 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  aryCallback(..  
2420: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
2430: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29  ileName..      )
2440: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
2450: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24b0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
24c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f  Methods..      /
24d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24e0: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
24f0: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65   to load the spe
2500: 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69  cified native li
2510: 62 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67  brary file using
2520: 20 74 68 65 20 57 69 6e 33 32 0d 0a 20 20 20 20   the Win32..    
2530: 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20    /// API...    
2540: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
2560: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
2570: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
2580: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
2590: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
25a0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
25b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
25d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
25e0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
25f0: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
2600: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
2610: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
2620: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
2630: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2640: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
2650: 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72  ntPtr LoadLibrar
2660: 79 57 69 6e 33 32 28 0d 0a 20 20 20 20 20 20 20  yWin32(..       
2670: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
2680: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  me..          ).
2690: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
26a0: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
26b0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
26c0: 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28  n32.LoadLibrary(
26d0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  fileName);..    
26e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2730: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2740: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2750: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2760: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2770: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
2780: 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70  s to load the sp
2790: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c  ecified native l
27a0: 69 62 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e  ibrary file usin
27b0: 67 20 74 68 65 20 50 4f 53 49 58 0d 0a 20 20 20  g the POSIX..   
27c0: 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20     /// API...   
27d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
27f0: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
2800: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
2810: 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66  The file name of
2820: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
2830: 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20  ary to load...  
2840: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2850: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
2860: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
2870: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
2880: 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73  le handle upon s
2890: 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50  uccess -OR- IntP
28a0: 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75  tr.Zero on failu
28b0: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
28c0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
28d0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
28e0: 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61  IntPtr LoadLibra
28f0: 72 79 50 6f 73 69 78 28 0d 0a 20 20 20 20 20 20  ryPosix(..      
2900: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2910: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ame..          )
2920: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
2930: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
2940: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50  feNativeMethodsP
2950: 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20  osix.dlopen(..  
2960: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
2970: 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e 61 74 69  Name, UnsafeNati
2980: 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 52  veMethodsPosix.R
2990: 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b 0d 0a 20  TLD_DEFAULT);.. 
29a0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
29b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
29c0: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
2a20: 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
2a30: 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ods..      /// <
2a40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a50: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
2a60: 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69  load the specifi
2a70: 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  ed native librar
2a80: 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  y file...      /
2a90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2aa0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2ab0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
2ac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2ad0: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2ae0: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2af0: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
2b00: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2b10: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2b20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2b30: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
2b40: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
2b50: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
2b60: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
2b70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2b80: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62  urns>..      pub
2b90: 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
2ba0: 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a  r LoadLibrary(..
2bb0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2bc0: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
2bd0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
2be0: 0a 20 20 20 20 20 20 20 20 20 20 4c 6f 61 64 4c  .          LoadL
2bf0: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 20 63  ibraryCallback c
2c00: 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69  allback = LoadLi
2c10: 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23  braryWin32;....#
2c20: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2c30: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c40: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 48 65           if (!He
2c50: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69  lperMethods.IsWi
2c60: 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20  ndows())..      
2c70: 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b          callback
2c80: 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f   = LoadLibraryPo
2c90: 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  six;..#endif....
2ca0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cb0: 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61   callback(fileNa
2cc0: 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  me);..      }.. 
2cd0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2ce0: 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69  .  }..  #endregi
2cf0: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
2d50: 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74  on Unmanaged Int
2d60: 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61  erop Methods Sta
2d70: 74 69 63 20 43 6c 61 73 73 20 28 50 4f 53 49 58  tic Class (POSIX
2d80: 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  )..#if !PLATFORM
2d90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2da0: 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  K..  /// <summar
2db0: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63  y>..  /// This c
2dc0: 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f  lass declares P/
2dd0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74  Invoke methods t
2de0: 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 50 4f  o call native PO
2df0: 53 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f  SIX APIs...  ///
2e00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b   </summary>..  [
2e10: 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65  SuppressUnmanage
2e20: 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a  dCodeSecurity]..
2e30: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2e40: 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61  c class UnsafeNa
2e50: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
2e60: 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
2ec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2ed0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
2ee0: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
2ef0: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
2f00: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c  e native Unix dl
2f10: 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  open..      /// 
2f20: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
2f30: 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e  he POSIX documen
2f40: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
2f50: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
2f60: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
2f70: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
2f80: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2f90: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2fa0: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
2fb0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
2fc0: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
2fd0: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
2fe0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3000: 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a  m name="mode">..
3010: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
3020: 75 73 74 20 62 65 20 61 20 63 6f 6d 62 69 6e 61  ust be a combina
3030: 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 69  tion of the indi
3040: 76 69 64 75 61 6c 20 62 69 74 20 66 6c 61 67 73  vidual bit flags
3050: 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20   RTLD_LAZY,..   
3060: 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c     /// RTLD_NOW,
3070: 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e   RTLD_GLOBAL, an
3080: 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e  d/or RTLD_LOCAL.
3090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
30a0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
30b0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
30c0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
30d0: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70  module handle up
30e0: 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20  on success -OR- 
30f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66  IntPtr.Zero on f
3100: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
3110: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
3120: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
3130: 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 20 45 6e  "__Internal", En
3140: 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70  tryPoint = "dlop
3150: 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  en",..          
3160: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3170: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3180: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
3190: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41  rSet = CharSet.A
31a0: 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nsi,..          
31b0: 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d  BestFitMapping =
31c0: 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55   false, ThrowOnU
31d0: 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20  nmappableChar = 
31e0: 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  true,..         
31f0: 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20   SetLastError = 
3200: 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e  true)]..      in
3210: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
3220: 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70  tern IntPtr dlop
3230: 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  en(string fileNa
3240: 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a  me, int mode);..
3250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
32b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
32c0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
32d0: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
32e0: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a  nction calls laz
32f0: 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ily...      /// 
3300: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3310: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
3320: 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d   int RTLD_LAZY =
3330: 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x1;....      /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3390: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
33a0: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
33b0: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
33c0: 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61  bind function ca
33d0: 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  lls immediately.
33e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
33f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
3400: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
3410: 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b   RTLD_NOW = 0x2;
3420: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3470: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3480: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3490: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
34a0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20   dlopen(), make 
34b0: 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79  symbols globally
34c0: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
34d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
34e0: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
34f0: 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  l const int RTLD
3500: 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b  _GLOBAL = 0x100;
3510: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
3570: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3580: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
3590: 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73   dlopen(), oppos
35a0: 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42  ite of RTLD_GLOB
35b0: 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  AL, and the defa
35c0: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
35d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
35e0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
35f0: 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20   int RTLD_LOCAL 
3600: 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20  = 0x000;....    
3610: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
3660: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3670: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
3680: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
3690: 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20  ), the defaults 
36a0: 75 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  used by this cla
36b0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
36c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
36d0: 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74   internal  const
36e0: 20 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c   int RTLD_DEFAUL
36f0: 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52  T = RTLD_NOW | R
3700: 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d  TLD_GLOBAL;..  }
3710: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64  ..#endif..  #end
3720: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
3780: 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64  region Unmanaged
3790: 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73   Interop Methods
37a0: 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57   Static Class (W
37b0: 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75  in32)..  /// <su
37c0: 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
37d0: 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65  is class declare
37e0: 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  s P/Invoke metho
37f0: 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76  ds to call nativ
3800: 65 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20  e Win32 APIs... 
3810: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3820: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
3830: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
3840: 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61  .  [SuppressUnma
3850: 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74  nagedCodeSecurit
3860: 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e  y]..#endif..  in
3870: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
3880: 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ass UnsafeNative
3890: 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20  MethodsWin32..  
38a0: 7b 0d 0a 20 20 20 20 20 20 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 2f  ////////////////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
3900: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3910: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
3920: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
3930: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
3940: 74 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c  tive Win32 LoadL
3950: 69 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f  ibrary..      //
3960: 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65  / function.  See
3970: 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65   the MSDN docume
3980: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c  ntation for full
3990: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
39a0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64   it..      /// d
39b0: 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oes...      /// 
39c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
39d0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
39e0: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
39f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
3a00: 65 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61  e of the executa
3a10: 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ble library...  
3a20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3a30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
3a40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
3a50: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
3a60: 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73  le handle upon s
3a70: 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50  uccess -OR- IntP
3a80: 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75  tr.Zero on failu
3a90: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
3aa0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21  /returns>..#if !
3ab0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
3ac0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
3ad0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72   [DllImport("ker
3ae0: 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a  nel32",..#else..
3af0: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
3b00: 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e  ("coredll",..#en
3b10: 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e  dif.. CallingCon
3b20: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
3b30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61  gConvention.Wina
3b40: 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  pi, CharSet = Ch
3b50: 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66  arSet.Auto,..#if
3b60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3b70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
3b80: 20 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61         BestFitMa
3b90: 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54  pping = false, T
3ba0: 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65  hrowOnUnmappable
3bb0: 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65  Char = true,..#e
3bc0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
3bd0: 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74  SetLastError = t
3be0: 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  rue)]..      int
3bf0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
3c00: 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ern IntPtr LoadL
3c10: 69 62 72 61 72 79 28 73 74 72 69 6e 67 20 66 69  ibrary(string fi
3c20: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
3c30: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
3c80: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
3c90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3ca0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3cb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
3cc0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
3cd0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
3ce0: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
3cf0: 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e  in32 GetSystemIn
3d00: 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  fo..      /// fu
3d10: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
3d20: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
3d30: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
3d40: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
3d50: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
3d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3d70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3d80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
3d90: 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20  ystemInfo">..   
3da0: 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65     /// The syste
3db0: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74  m information st
3dc0: 72 75 63 74 75 72 65 20 74 6f 20 62 65 20 66 69  ructure to be fi
3dd0: 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20 66  lled in by the f
3de0: 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
3df0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
3e00: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
3e10: 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e  coredll", Callin
3e20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
3e30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
3e40: 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20  Winapi)]..      
3e50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
3e60: 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53  extern void GetS
3e70: 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59  ystemInfo(out SY
3e80: 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d  STEM_INFO system
3e90: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3ef0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3f00: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65        /// This e
3f10: 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61  numeration conta
3f20: 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65  ins the possible
3f30: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
3f40: 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
3f50: 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72   /// architectur
3f60: 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73  e field of the s
3f70: 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
3f80: 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  n structure...  
3f90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3fa0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3fb0: 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f  al enum Processo
3fc0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20  rArchitecture : 
3fd0: 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54  ushort /* COMPAT
3fe0: 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20  : Win32. */..   
3ff0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4000: 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20  Intel = 0,..    
4010: 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d        MIPS = 1,.
4020: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
4030: 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 2,..         
4040: 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20   PowerPC = 3,.. 
4050: 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34           SHx = 4
4060: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d  ,..          ARM
4070: 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 5,..         
4080: 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20   IA64 = 6,..    
4090: 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20        Alpha64 = 
40a0: 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53  7,..          MS
40b0: 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20  IL = 8,..       
40c0: 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20     AMD64 = 9,.. 
40d0: 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e           IA32_on
40e0: 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20  _Win64 = 10,..  
40f0: 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20          Unknown 
4100: 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20  = 0xFFFF..      
4110: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4160: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4170: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4180: 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74   /// This struct
4190: 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ure contains inf
41a0: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
41b0: 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75  he current compu
41c0: 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20  ter. This..     
41d0: 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68   /// includes th
41e0: 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65  e processor type
41f0: 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d  , page size, mem
4200: 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65  ory addresses, e
4210: 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tc...      /// <
4220: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4230: 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
4240: 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
4250: 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e  tial)]..      in
4260: 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59  ternal struct SY
4270: 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20  STEM_INFO..     
4280: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75   {..          pu
4290: 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72  blic ProcessorAr
42a0: 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63  chitecture wProc
42b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
42c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  e;..          pu
42d0: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73  blic ushort wRes
42e0: 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53  erved; /* NOT US
42f0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
4300: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50   public uint dwP
4310: 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20  ageSize; /* NOT 
4320: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
4330: 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
4340: 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63   lpMinimumApplic
4350: 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a  ationAddress; /*
4360: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
4370: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
4380: 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41  ntPtr lpMaximumA
4390: 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73  pplicationAddres
43a0: 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  s; /* NOT USED *
43b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
43c0: 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76  lic uint dwActiv
43d0: 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20  eProcessorMask; 
43e0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
43f0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4400: 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66   uint dwNumberOf
4410: 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e  Processors; /* N
4420: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
4430: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
4440: 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70  t dwProcessorTyp
4450: 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  e; /* NOT USED *
4460: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
4470: 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63  lic uint dwAlloc
4480: 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79  ationGranularity
4490: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
44a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
44b0: 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65  ic ushort wProce
44c0: 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f  ssorLevel; /* NO
44d0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
44e0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f       public usho
44f0: 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76  rt wProcessorRev
4500: 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53  ision; /* NOT US
4510: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  ED */..      }..
4520: 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23  #endif..  }..  #
4530: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4590: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
45a0: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
45b0: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
45c0: 20 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f   (SQLite)..  ///
45d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
45e0: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63  / This class dec
45f0: 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d  lares P/Invoke m
4600: 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e  ethods to call n
4610: 61 74 69 76 65 20 53 51 4c 69 74 65 20 41 50 49  ative SQLite API
4620: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
4630: 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46  ary>..#if !PLATF
4640: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4650: 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73  WORK..  [Suppres
4660: 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65  sUnmanagedCodeSe
4670: 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d  curity]..#endif.
4680: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
4690: 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e  ic class UnsafeN
46a0: 61 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20  ativeMethods..  
46b0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
46c0: 20 53 68 61 72 65 64 20 4e 61 74 69 76 65 20 53   Shared Native S
46d0: 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
46e0: 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
46f0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
4700: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
4710: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
4720: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4730: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
4740: 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79 6e 61  on used for dyna
4750: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69  mic link librari
4760: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
4770: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4780: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
4790: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
47a0: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
47b0: 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20   = ".dll";....  
47c0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
4800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4810: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4820: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
4830: 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e  e file extension
4840: 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 58 4d   used for the XM
4850: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
4860: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  file...      ///
4870: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4880: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
4890: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
48a0: 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65  g ConfigFileExte
48b0: 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67  nsion = ".config
48c0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4910: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
4920: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4930: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
4940: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d  e name of the XM
4950: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
4960: 66 69 6c 65 20 73 70 65 63 69 66 69 63 20 74 6f  file specific to
4970: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
4980: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
4990: 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  te assembly...  
49a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
49b0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
49c0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
49d0: 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66  y string XmlConf
49e0: 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20  igFileName =..  
49f0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 55          typeof(U
4a00: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
4a10: 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20  ds).Namespace + 
4a20: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
4a30: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f   +..          Co
4a40: 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f  nfigFileExtensio
4a50: 6e 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  n;..      #endre
4a60: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ab0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
4ac0: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
4ad0: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f   Data..      ///
4ae0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4af0: 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20    /// This lock 
4b00: 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65  is used to prote
4b10: 63 74 20 74 68 65 20 73 74 61 74 69 63 20 5f 53  ct the static _S
4b20: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
4b30: 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  eFileName,..    
4b40: 20 20 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74    /// _SQLiteNat
4b50: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c  iveModuleHandle,
4b60: 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72   and processorAr
4b70: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
4b80: 72 6d 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20  rms fields...   
4b90: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4ba0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
4bb0: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
4bc0: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
4bd0: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
4be0: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
4c40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4c50: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64        /// This d
4c60: 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73  ictionary stores
4c70: 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65   the mappings be
4c80: 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20  tween processor 
4c90: 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20  architecture..  
4ca0: 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e      /// names an
4cb0: 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  d platform names
4cc0: 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67  .  These mapping
4cd0: 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66  s are now used f
4ce0: 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f  or two..      //
4cf0: 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72  / purposes.  Fir
4d00: 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73 65  st, they are use
4d10: 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69  d to determine i
4d20: 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  f the assembly c
4d30: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  ode..      /// b
4d40: 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  ase should be us
4d50: 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  ed instead of th
4d60: 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65  e location, base
4d70: 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f  d upon whether o
4d80: 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ne..      /// or
4d90: 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d   more of the nam
4da0: 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ed sub-directori
4db0: 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e 20  es exist within 
4dc0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
4dd0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
4de0: 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79  e.  Second, they
4df0: 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73 73   are used to ass
4e00: 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74  ist in loading t
4e10: 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
4e20: 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
4e30: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
4e40: 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65  y into the curre
4e50: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
4e60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4e70: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
4e80: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
4e90: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
4ea0: 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  g> processorArch
4eb0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
4ec0: 73 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  s;..      #endre
4ed0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
4f30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4f40: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c      /// For now,
4f50: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d   this method sim
4f60: 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e  ply calls the In
4f70: 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e  itialize method.
4f80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4f90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74  mmary>..      st
4fa0: 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76  atic UnsafeNativ
4fb0: 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20  eMethods()..    
4fc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
4fd0: 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20  nitialize();..  
4fe0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
5040: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5050: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
5060: 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  s to initialize 
5070: 74 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72  this class by pr
5080: 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61  e-loading the na
5090: 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
50a0: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66     /// library f
50b0: 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  or the processor
50c0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
50d0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
50e0: 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  cess...      ///
50f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5100: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5110: 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69  ic void Initiali
5120: 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23  ze()..      {..#
5130: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
5140: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
5150: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
5160: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5170: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
5180: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
5190: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
51a0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
51b0: 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c   If the "No_PreL
51c0: 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72  oadSQLite" envir
51d0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
51e0: 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20  is set (to..    
51f0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
5200: 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61  nything), skip a
5210: 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63  ll our special c
5220: 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72  ode and simply r
5230: 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eturn...        
5240: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5250: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
5260: 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  lue("No_PreLoadS
5270: 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d  QLite", null) !=
5280: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5290: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23        return;..#
52a0: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
52b0: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
52c0: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
52d0: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
52e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
52f0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
5300: 20 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74   Create the list
5310: 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20 74   of statistics t
5320: 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  hat will contain
5330: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
5340: 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20  //       number 
5350: 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73 65  of times each se
5360: 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20  tting value has 
5370: 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20  been read...    
5380: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5390: 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
53a0: 69 74 69 61 6c 69 7a 65 53 65 74 74 69 6e 67 52  itializeSettingR
53b0: 65 61 64 43 6f 75 6e 74 73 28 29 3b 0d 0a 23 65  eadCounts();..#e
53c0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
53d0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
53e0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
53f0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
5400: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5410: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5420: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
5430: 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74  ODO: Make sure t
5440: 68 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61  his list is upda
5450: 74 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f  ted if the suppo
5460: 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  rted..          
5470: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f      //       pro
5480: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
5490: 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72  ure names and/or
54a0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d   platform names.
54b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
54c0: 2f 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e  /       changes.
54d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
54e0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
54f0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
5500: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
5510: 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  orms == null).. 
5520: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5540: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5550: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
5560: 20 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20   Create the map 
5570: 6f 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  of processor arc
5580: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d  hitecture names.
5590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
55a0: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70     //       to p
55b0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73  latform names us
55c0: 69 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e  ing a case-insen
55d0: 73 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20  sitive string.. 
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55f0: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72   //       compar
5600: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
5610: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5620: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
5630: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
5640: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20  rePlatforms =.. 
5650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5660: 20 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e       new Diction
5670: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
5680: 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ng>(..          
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f  StringComparer.O
56b0: 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65  rdinalIgnoreCase
56c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
56d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
56e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
56f0: 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65   NOTE: Setup the
5700: 20 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72   list of platfor
5710: 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74  m names associat
5720: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
5730: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5740: 20 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65      the supporte
5750: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
5760: 69 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20  itectures...    
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5790: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
57a0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
57b0: 6d 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57  ms.Add("x86", "W
57c0: 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20  in32");..       
57d0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
57e0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
57f0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
5800: 4d 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a  MD64", "x64");..
5810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5820: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
5830: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
5840: 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74  .Add("IA64", "It
5850: 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20  anium");..      
5860: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
5870: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5880: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
5890: 41 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d  ARM", "WinCE");.
58a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
58b0: 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
58c0: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
58d0: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
58e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
58f0: 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45  AMEWORK..#if PRE
5900: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
5910: 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARY..           
5920: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5930: 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20       // BUGBUG: 
5940: 57 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72  What about other
5950: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
5960: 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20  ains?..         
5970: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5980: 20 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69         if (_SQLi
5990: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
59a0: 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
59b0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
59c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
59d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
59e0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
59f0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
5a00: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
5a10: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
5a20: 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  cture = null;...
5a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5a40: 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f     /* IGNORED */
5a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a60: 20 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72      SearchForDir
5a70: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
5a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5a90: 65 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ef baseDirectory
5aa0: 2c 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41  , ref processorA
5ab0: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
5ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ad0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5ae0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
5af0: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65  : Attempt to pre
5b00: 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65  -load the SQLite
5b10: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f   core library (o
5b20: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
5b30: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
5b40: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
5b50: 61 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74  and store both t
5b60: 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20  he file name..  
5b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b80: 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74  //       and nat
5b90: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
5ba0: 65 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67  e for later usag
5bb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
5bc0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49              /* I
5be0: 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20  GNORED */..     
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
5c00: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a  LoadSQLiteDll(..
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
5c30: 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72  ory, processorAr
5c40: 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20  chitecture,..   
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61     ref _SQLiteNa
5c70: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
5c80: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
5c90: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f             ref _
5ca0: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
5cb0: 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  leHandle);..    
5cc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
5cd0: 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dif..#endif..   
5ce0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5cf0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5d50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5d60: 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77   /// Combines tw
5d70: 6f 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d  o path strings..
5d80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5d90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5da0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61   <param name="pa
5db0: 74 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  th1">..      ///
5dc0: 20 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20   The first path 
5dd0: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
5de0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5df0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
5e00: 20 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a   name="path2">..
5e10: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65        /// The se
5e20: 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e  cond path -OR- n
5e30: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
5e40: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
5e50: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5e60: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
5e70: 62 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e  bined path strin
5e80: 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62  g -OR- null if b
5e90: 6f 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69  oth of the origi
5ea0: 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20  nal path..      
5eb0: 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20  /// strings are 
5ec0: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
5ed0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
5ee0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5ef0: 63 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f  c string MaybeCo
5f00: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
5f10: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74        string pat
5f20: 68 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  h1,..          s
5f30: 74 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20  tring path2..   
5f40: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
5f50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
5f60: 28 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d  (path1 != null).
5f70: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
5f80: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5f90: 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path2 != null)..
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f    return Path.Co
5fc0: 6d 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74  mbine(path1, pat
5fd0: 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h2);..          
5fe0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6000: 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20  rn path1;..     
6010: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
6020: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
6030: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6040: 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20     if (path2 != 
6050: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6060: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6070: 70 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20  path2;..        
6080: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
6090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
60a0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
60b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
60c0: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
6120: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6130: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
6140: 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20  returns the XML 
6150: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
6160: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
6170: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
6180: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
6190: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
61a0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
61b0: 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20  mponents...     
61c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
61d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
61e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
61f0: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
6200: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
6210: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
6220: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
6230: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
6240: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
6250: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
6260: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6270: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
6280: 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66  tring GetXmlConf
6290: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
62a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
62b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
62c0: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  y;..          st
62d0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  ring fileName;..
62e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
62f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6300: 0d 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65  ..          dire
6310: 63 74 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69  ctory = AppDomai
6320: 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
6330: 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a  BaseDirectory;..
6340: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
6350: 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e  me = MaybeCombin
6360: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
6370: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
6380: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
6390: 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
63a0: 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
63c0: 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65  rn fileName;..#e
63d0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
63e0: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65    directory = Ge
63f0: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
6400: 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
6410: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62   fileName = Mayb
6420: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
6430: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
6440: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
6450: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
6460: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
6470: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
6480: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
6490: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
64a0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
64b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6510: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6520: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
6530: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
6540: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
6550: 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  pecified setting
6560: 2c 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d  , using the XML.
6570: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69  .      /// confi
6580: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e  guration file an
6590: 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e  d/or the environ
65a0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66  ment variables f
65b0: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  or the current..
65c0: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
65d0: 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72  s and/or the cur
65e0: 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65  rent system, whe
65f0: 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  n available...  
6600: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6610: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
6620: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
6630: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6640: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
6650: 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ting...      ///
6660: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
6670: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6680: 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20  ="default">..   
6690: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
66a0: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
66b0: 69 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68  if the setting h
66c0: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
66d0: 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20  explicitly..    
66e0: 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20    /// or cannot 
66f0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
6700: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6710: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6720: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6730: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
6740: 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d  the setting -OR-
6750: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
6760: 75 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d  ue specified by.
6770: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
6780: 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75  mref name="defau
6790: 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73  lt" /> if it has
67a0: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
67b0: 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20  plicitly or..   
67c0: 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
67d0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79   determined.  By
67e0: 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65   default, all re
67f0: 66 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73  ferences to exis
6800: 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ting..      /// 
6810: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
6820: 61 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78  ables will be ex
6830: 70 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20  panded to their 
6840: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61  corresponding va
6850: 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lues..      /// 
6860: 77 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65  within the value
6870: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
6880: 75 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74 68  unless either th
6890: 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72  e "No_Expand" or
68a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f  ..      /// "No_
68b0: 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66  Expand_<paramref
68c0: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22   name="name" />"
68d0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
68e0: 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f  iable is set [to
68f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74  ..      /// anyt
6900: 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f  hing]...      //
6910: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
6920: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6930: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65  tic string GetSe
6940: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
6950: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
6960: 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  me,    /* in */.
6970: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6980: 67 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e  g @default /* in
6990: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
69a0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
69b0: 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d       if (name ==
69c0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
69d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
69e0: 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  fault;....      
69f0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6a40: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
6a50: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
6a60: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
6a70: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
6a80: 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
6a90: 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 29 3b  ReadCount(name);
6aa0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
6ab0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  /....          s
6b20: 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75  tring value = nu
6b30: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ll;....#if !PLAT
6b40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6b50: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
6b60: 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74   bool expand = t
6b70: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
6b80: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
6b90: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
6ba0: 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70  Variable("No_Exp
6bb0: 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  and") != null)..
6bc0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6bd0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e             expan
6be0: 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
6bf0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
6c00: 20 20 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69     else if (Envi
6c10: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
6c20: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
6c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6c40: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
6c50: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
6c60: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
6c70: 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
6c90: 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20  No_Expand_{0}", 
6ca0: 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d  name)) != null).
6cb0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
6cc0: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61              expa
6cd0: 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  nd = false;..   
6ce0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6cf0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
6d00: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
6d10: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
6d20: 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
6d30: 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 20       if (expand 
6d40: 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  && !String.IsNul
6d50: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
6d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d70: 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
6d80: 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f  ent.ExpandEnviro
6d90: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76  nmentVariables(v
6da0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
6db0: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d      if (value !=
6dc0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6dd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
6de0: 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ue;..#endif.... 
6df0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
6e00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6e10: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
6e20: 66 69 6c 65 4e 61 6d 65 20 3d 20 47 65 74 58 6d  fileName = GetXm
6e30: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28  lConfigFileName(
6e40: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6e50: 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
6e60: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
6e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6e80: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d  urn @default;...
6e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
6ea0: 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d  mlDocument docum
6eb0: 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63  ent = new XmlDoc
6ec0: 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ument();....    
6ed0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
6ee0: 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65  nt.Load(fileName
6ef0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6f00: 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65      XmlElement e
6f10: 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e  lement = documen
6f20: 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f  t.SelectSingleNo
6f30: 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de(..           
6f40: 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
6f50: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
6f60: 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  t(CultureInfo.In
6f70: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
6f80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6f90: 20 20 20 22 2f 63 6f 6e 66 69 67 75 72 61 74 69     "/configurati
6fa0: 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67 73 2f 61  on/appSettings/a
6fb0: 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c  dd[@key='{0}']",
6fc0: 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20 20 20 20   name)) as..    
6fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
6fe0: 6c 45 6c 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20  lElement;....   
6ff0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
7000: 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  lement != null).
7010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
7020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7030: 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e      if (element.
7040: 48 61 73 41 74 74 72 69 62 75 74 65 28 22 76 61  HasAttribute("va
7050: 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  lue"))..        
7060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
7070: 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65  lue = element.Ge
7080: 74 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  tAttribute("valu
7090: 65 22 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  e");....#if !PLA
70a0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
70b0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
70c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
70d0: 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e 67 2e  pand && !String.
70e0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
70f0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
7100: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
7110: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
7120: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
7130: 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75  ntVariables(valu
7140: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7160: 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
7170: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
7180: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7190: 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
71a0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
71b0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
71c0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
71d0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
71e0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
71f0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
7200: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
7210: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
7220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7230: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
7240: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
7250: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
7260: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
7270: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
7280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7290: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
72a0: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
72b0: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
72c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72d0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
72e0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
72f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7300: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
7310: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
7320: 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73   failed to get s
7330: 65 74 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20  etting " +..    
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7350: 20 20 22 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65    "\"{0}\" value
7360: 3a 20 7b 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29  : {1}", name, e)
7370: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
7380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
73a0: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
73b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
73c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
73d0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
73e0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
73f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
7400: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
7410: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
7420: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
7480: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7490: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
74a0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
74b0: 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72  string ListToStr
74c0: 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67  ing(IList<string
74d0: 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b  > list)..      {
74e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
74f0: 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  list == null).. 
7500: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7510: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
7520: 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69         StringBui
7530: 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65  lder result = ne
7540: 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28  w StringBuilder(
7550: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
7560: 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
7570: 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29  element in list)
7580: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
7590: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
75a0: 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c  (element == null
75b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
75c0: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
75d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
75e0: 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74  if (result.Lengt
75f0: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
7600: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
7610: 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d  .Append(' ');...
7620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
7630: 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65  esult.Append(ele
7640: 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
7650: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7660: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54   return result.T
7670: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
7680: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
76e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
76f0: 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69  nt CheckForArchi
7700: 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66  tecturesAndPlatf
7710: 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20  orms(..         
7720: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
7730: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
7740: 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d  f List<string> m
7750: 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20  atches..        
7760: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
7770: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
7780: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
7790: 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73       if (matches
77a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
77b0: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
77c0: 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
77d0: 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng>();....      
77e0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
77f0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
7800: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7810: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
7820: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
7830: 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20  directory) &&.. 
7840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7850: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
7860: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
7870: 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   != null))..    
7880: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
78a0: 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65  oreach (KeyValue
78b0: 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72  Pair<string, str
78c0: 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20  ing> pair..     
78d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78e0: 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73         in proces
78f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
7900: 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20  latforms)..     
7910: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7930: 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
7940: 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65  ory.Exists(Maybe
7950: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
7960: 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29  ctory, pair.Key)
7970: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7980: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79a0: 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41         matches.A
79b0: 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20  dd(pair.Key);.. 
79c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79d0: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
79e0: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
79f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
7a20: 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d  e = pair.Value;.
7a30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7a40: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
7a50: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
7a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a70: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
7a80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7a90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69            if (Di
7aa0: 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d  rectory.Exists(M
7ab0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
7ac0: 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75 65  directory, value
7ad0: 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
7ae0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
7af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b00: 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
7b10: 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  Add(value);..   
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b30: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b         result++;
7b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7b50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7b80: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
7b90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7ba0: 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
7bb0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c00: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72  ////....      pr
7c10: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
7c20: 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43  l CheckAssemblyC
7c30: 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20 20  odeBase(..      
7c40: 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
7c50: 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20  embly,..        
7c60: 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69 6c    ref string fil
7c70: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
7c80: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
7c90: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
7ca0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7cb0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
7cc0: 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ce0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
7cf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
7d00: 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20 3d  tring codeBase =
7d10: 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61   assembly.CodeBa
7d20: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
7d30: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
7d40: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
7d50: 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20 20  deBase))..      
7d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7d70: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
7d80: 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20 75             Uri u
7d90: 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f 64  ri = new Uri(cod
7da0: 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  eBase);..       
7db0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f         string lo
7dc0: 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72  calFileName = ur
7dd0: 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a  i.LocalPath;....
7de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7df0: 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 6c   (!File.Exists(l
7e00: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  ocalFileName))..
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e20: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
7e30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7e40: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
7e50: 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
7e60: 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20  ctoryName(..    
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
7e80: 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a  calFileName); /*
7e90: 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
7ea0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
7eb0: 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g xmlConfigFileN
7ec0: 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69  ame = MaybeCombi
7ed0: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
7ee0: 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
7ef0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
7f00: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
7f10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46             if (F
7f20: 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f  ile.Exists(xmlCo
7f30: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  nfigFileName))..
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
7f50: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
7f60: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
7f70: 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
7f80: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fa0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7fb0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
7fc0: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
7fd0: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
7fe0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8000: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
8010: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
8020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8030: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
8040: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
8050: 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f  der found XML co
8060: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
8070: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
8080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8090: 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66  "via code base f
80a0: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
80b0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
80c0: 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20   \"{0}\"",..    
80d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80e0: 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46        xmlConfigF
80f0: 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68  ileName)); /* th
8100: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
8110: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
8120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
8130: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
8140: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8160: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
8170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8180: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
8190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81a0: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63    fileName = loc
81b0: 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  alFileName;..   
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
81d0: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
81e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69                Li
8200: 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68  st<string> match
8210: 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  es = null;....  
8220: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8230: 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
8240: 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
8250: 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65 66  s(directory, ref
8260: 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d 0a   matches) > 0)..
8270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8280: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
8290: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
82a0: 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
82b0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
82c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
82e0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
82f0: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
8300: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
8310: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
8320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8330: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
8340: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
8350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8360: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
8370: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
8380: 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
8390: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
83a0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83c0: 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66  "via code base f
83d0: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
83e0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
83f0: 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20   \"{0}\"",..    
8400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8410: 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72 69        ListToStri
8420: 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20 2f  ng(matches))); /
8430: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8460: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
8470: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8490: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
84a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
84b0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
84c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
84d0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
84e0: 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d   localFileName;.
84f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8500: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
8510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
8520: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8530: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
8540: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
8550: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
8560: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
8570: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
8580: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
8590: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
85a0: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
85b0: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
85c0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
85d0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
85e0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
8600: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
8610: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8620: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
8630: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
8640: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
8650: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
8660: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
8670: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
8680: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
8690: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
86a0: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
86b0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
86c0: 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73 65   check code base
86d0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
86e0: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72              "for
86f0: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
8700: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b  ting assembly: {
8710: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
8720: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
8730: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8740: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
8750: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8770: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8790: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
87a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
87b0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
87c0: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
87d0: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8820: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
8830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8840: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
8850: 72 65 74 75 72 6e 73 20 74 68 65 20 64 69 72 65  returns the dire
8860: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
8870: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
8880: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f   being..      //
8890: 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20 20 20  / executed...   
88a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
88b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
88c0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
88d0: 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20  / The directory 
88e0: 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
88f0: 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
8900: 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e   executed -OR- n
8910: 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ull if..      //
8920: 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
8930: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
8940: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
8950: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
8960: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
8970: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
8980: 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ry()..      {.. 
8990: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
89a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
89b0: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
89c0: 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73  y assembly = Ass
89d0: 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69  embly.GetExecuti
89e0: 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d  ngAssembly();...
89f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
8a00: 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  f (assembly == n
8a10: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8a20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
8a30: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
8a40: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
8a50: 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  eName = null;...
8a60: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
8a70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
8a90: 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d  semblyName assem
8aa0: 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  blyName = assemb
8ab0: 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d  ly.GetName();...
8ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
8ad0: 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20  f (assemblyName 
8ae0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
8af0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8b00: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
8b10: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
8b20: 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d  me = assemblyNam
8b30: 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c  e.CodeBase;..#el
8b40: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
8b50: 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65    if (!CheckAsse
8b60: 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73  mblyCodeBase(ass
8b70: 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e  embly, ref fileN
8b80: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
8b90: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
8ba0: 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  e = assembly.Loc
8bb0: 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ation;..#endif..
8bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8bd0: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
8be0: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
8bf0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
8c00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
8c10: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
8c20: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
8c30: 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
8c40: 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
8c50: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
8c60: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
8c70: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
8c80: 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
8c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ca0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
8cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8cc0: 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
8cd0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
8ce0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
8cf0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
8d00: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
8d10: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
8d20: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
8d30: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
8d40: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
8d50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
8d60: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
8d70: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
8d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d90: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
8da0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8db0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
8dc0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
8dd0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
8de0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
8df0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
8e00: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
8e10: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
8e30: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
8e40: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
8e50: 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72 79  to get directory
8e60: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
8e70: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72              "for
8e80: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
8e90: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b  ting assembly: {
8ea0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
8eb0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
8ec0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8ed0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
8ee0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8f20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8f30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8f40: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
8f50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
8f60: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8f70: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8fc0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70        #region Op
8fd0: 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51  tional Native SQ
8fe0: 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65  Lite Library Pre
8ff0: 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20  -Loading Code.. 
9000: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
9010: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72  / NOTE: If we ar
9020: 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68  e looking for th
9030: 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
9040: 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e  e DLL ("sqlite3.
9050: 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f  dll"),..      //
9060: 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65 72         the inter
9070: 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e  op DLL ("SQLite.
9080: 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f  Interop.dll"), o
9090: 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67  r we are running
90a0: 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   on the..      /
90b0: 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d  /       .NET Com
90c0: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
90d0: 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64  we should includ
90e0: 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c  e this code (onl
90f0: 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y if the..      
9100: 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72 65  //       feature
9110: 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65   has actually be
9120: 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68  en enabled).  Th
9130: 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65  is code would be
9140: 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20   totally..      
9150: 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64 61  //       redunda
9160: 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c  nt if this modul
9170: 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c  e has been bundl
9180: 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65  ed into the mixe
9190: 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  d-mode..      //
91a0: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e         assembly.
91b0: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20  ..      //..#if 
91c0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
91d0: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
91e0: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
91f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9200: 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
9210: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79     // NOTE: Only
9220: 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20   compile in the 
9230: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  native library p
9240: 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20  re-load code if 
9250: 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20  the feature..   
9260: 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20     //       has 
9270: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72  been enabled for
9280: 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20   this build...  
9290: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c      //..#if PREL
92a0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
92b0: 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RY..      /// <s
92c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
92d0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
92e0: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
92f0: 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69  ariable containi
9300: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
9310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68  ..      /// arch
9320: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
9330: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
9340: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9350: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
9360: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
9370: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f  donly string PRO
9380: 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
9390: 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  URE =..         
93a0: 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48   "PROCESSOR_ARCH
93b0: 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20  ITECTURE";....  
93c0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9410: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
9420: 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
9430: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9450: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69  native module fi
9460: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
9470: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
9480: 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a  brary or null...
9490: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
94a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
94b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
94c0: 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ng _SQLiteNative
94d0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
94e0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
9540: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9550: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
9560: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
9570: 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  le for the nativ
9580: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
9590: 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20   or the value.. 
95a0: 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e       /// IntPtr.
95b0: 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  Zero...      ///
95c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
95d0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
95e0: 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65  c IntPtr _SQLite
95f0: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
9600: 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  le = IntPtr.Zero
9610: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
9620: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9670: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9680: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9690: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
96a0: 73 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20  s the base file 
96b0: 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20 61 6e  name (without an
96c0: 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e 66 6f  y directory info
96d0: 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  rmation)..      
96e0: 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61 74 69  /// for the nati
96f0: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
9700: 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64  y to be pre-load
9710: 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  ed by this class
9720: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9730: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9740: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9750: 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
9760: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
9770: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
9780: 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70   library to be p
9790: 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20  re-loaded by..  
97a0: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61      /// this cla
97b0: 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ss -OR- null if 
97c0: 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74  its value cannot
97d0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
97e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
97f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
9800: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
9810: 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c 69 62  ing GetNativeLib
9820: 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
9830: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
9840: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
9850: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
9860: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
9880: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62 72  eLoadSQLite_Libr
9890: 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22  aryFileNameOnly"
98a0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
98b0: 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61        if (fileNa
98c0: 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  meOnly != null).
98d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
98e0: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e  eturn fileNameOn
98f0: 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ly;....         
9900: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 44   return SQLITE_D
9910: 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f  LL; /* COMPAT */
9920: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
9930: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
9970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
9980: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
9990: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61  >..      /// Sea
99a0: 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61  rches for the na
99b0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
99c0: 61 72 79 20 69 6e 20 74 68 65 20 64 69 72 65 63  ary in the direc
99d0: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
99e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61  .      /// the a
99f0: 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c  ssembly currentl
9a00: 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  y being executed
9a10: 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20   as well as the 
9a20: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
9a30: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
9a40: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
9a50: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20  ation domain... 
9a60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9a70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
9a80: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65  param name="base
9a90: 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20  Directory">..   
9aa0: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
9ab0: 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
9ac0: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
9ad0: 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
9ae0: 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
9af0: 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63   /// directory c
9b00: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
9b10: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
9b20: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
9b30: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
9b40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9b50: 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
9b60: 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
9b70: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
9b80: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
9b90: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
9ba0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
9bb0: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f  e name..      //
9bc0: 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61  / of the immedia
9bd0: 74 65 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e  te directory (i.
9be0: 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20 66 72  e. the offset fr
9bf0: 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69 72 65  om the base dire
9c00: 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f  ctory)..      //
9c10: 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  / containing the
9c20: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
9c30: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
9c40: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9c50: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
9c60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
9c70: 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69  zero (success) i
9c80: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
9c90: 69 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20  ite library was 
9ca0: 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65  found; otherwise
9cb0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
9cc0: 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20  o (failure)...  
9cd0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
9ce0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
9cf0: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65  e static bool Se
9d00: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
9d10: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  (..          ref
9d20: 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
9d30: 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 2f 2a  ctory,        /*
9d40: 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
9d50: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
9d60: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9d70: 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  ure /* out */.. 
9d80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
9d90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
9da0: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
9db0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
9dc0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
9dd0: 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44  ite_NoSearchForD
9de0: 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29  irectory", null)
9df0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
9e00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9e10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
9e20: 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20  se; /* DISABLED 
9e30: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  */..          }.
9e40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
9e50: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
9e60: 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  TE: Determine th
9e70: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
9e80: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
9e90: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
9ea0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9eb0: 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e      If this is n
9ec0: 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73  ot known by this
9ed0: 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f   class, we canno
9ee0: 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20  t continue...   
9ef0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9f00: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
9f10: 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61  NameOnly = GetNa
9f20: 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
9f30: 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ameOnly();....  
9f40: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
9f50: 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c  NameOnly == null
9f60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9f70: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
9f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9f90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9fa0: 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69 73  E: Build the lis
9fb0: 74 20 6f 66 20 62 61 73 65 20 64 69 72 65 63 74  t of base direct
9fc0: 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65 73  ories and proces
9fd0: 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20  sor/platform..  
9fe0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9ff0: 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6c   names.  These l
a000: 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65  ists will be use
a010: 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65  d to help locate
a020: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
a030: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a040: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
a050: 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70 20  ary (or interop 
a060: 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72 65  assembly) to pre
a070: 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20  -load into..    
a080: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
a090: 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  his process...  
a0a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a0b0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 64        string[] d
a0c0: 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a  irectories = {..
a0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
a0e0: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
a0f0: 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54  ry(),..#if !PLAT
a100: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a110: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
a120: 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43       AppDomain.C
a130: 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73  urrentDomain.Bas
a140: 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e  eDirectory,..#en
a150: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
a160: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
a170: 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72 65 63  tring[] subDirec
a180: 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20  tories = {..    
a190: 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f            GetPro
a1a0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
a1b0: 72 65 28 29 2c 20 47 65 74 50 6c 61 74 66 6f 72  re(), GetPlatfor
a1c0: 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20  mName(null)..   
a1d0: 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
a1e0: 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
a1f0: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
a200: 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65 73 29   in directories)
a210: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
a220: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a230: 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  (directory == nu
a240: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a250: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
a260: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a270: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
a280: 67 20 73 75 62 44 69 72 65 63 74 6f 72 79 20 69  g subDirectory i
a290: 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69 65 73  n subDirectories
a2a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a2b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a2c0: 20 20 20 20 20 20 69 66 20 28 73 75 62 44 69 72        if (subDir
a2d0: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
a2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2f0: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
a300: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a310: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
a320: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
a330: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
a340: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a360: 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61    MaybeCombinePa
a370: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 73 75  th(directory, su
a380: 62 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20  bDirectory),..  
a390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3a0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79      fileNameOnly
a3b0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
a3c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a3e0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53  / NOTE: If the S
a3f0: 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65  QLite DLL file e
a400: 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75  xists, return su
a410: 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
a420: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a430: 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75     Prior to retu
a440: 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62  rning, set the b
a450: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e  ase directory an
a460: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
a470: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
a480: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
a490: 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20  ture to reflect 
a4a0: 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20  the location..  
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4c0: 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65 20 69  //       where i
a4d0: 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20  t was found...  
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4f0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a500: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
a510: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
a520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a530: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a540: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
a550: 65 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72  eDirectory = dir
a560: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
a570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
a580: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
a590: 74 75 72 65 20 3d 20 73 75 62 44 69 72 65 63 74  ture = subDirect
a5a0: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a5c0: 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e  rn true; /* FOUN
a5d0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
a5e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
a5f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
a600: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a610: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
a620: 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20  e; /* NOT FOUND 
a630: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  */..      }.... 
a640: 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
a690: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a6a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
a6b0: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
a6c0: 6e 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ns the base dire
a6d0: 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72  ctory of the cur
a6e0: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
a6f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61  ..      /// doma
a700: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
a710: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a720: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
a730: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
a740: 73 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  se directory for
a750: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
a760: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20  lication domain 
a770: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
a780: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
a790: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
a7a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
a7b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
a7c0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
a7d0: 69 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63  ing GetBaseDirec
a7e0: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
a7f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
a800: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
a810: 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
a820: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
a830: 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65  ctory" environme
a840: 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20  nt variable..   
a850: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a860: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
a870: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
a880: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
a890: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
a8a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
a8b0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53  directory = GetS
a8c0: 65 74 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65  ettingValue("Pre
a8d0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
a8e0: 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20  irectory",..    
a8f0: 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b            null);
a900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
a910: 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e   (directory != n
a920: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
a930: 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
a940: 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tory;....#if !PL
a950: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a960: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
a970: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a980: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
a990: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
a9a0: 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63  UseAssemblyDirec
a9b0: 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  tory" environmen
a9c0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
a9d0: 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69        variable i
a9e0: 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74 68 69  s set (to anythi
a9f0: 6e 67 29 2c 20 74 68 65 6e 20 61 74 74 65 6d 70  ng), then attemp
aa00: 74 20 74 6f 20 75 73 65 20 74 68 65 0d 0a 20 20  t to use the..  
aa10: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
aa20: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
aa30: 69 6e 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e  ining the curren
aa40: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
aa50: 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20  sembly..        
aa60: 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e    //       (i.e.
aa70: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
aa80: 69 74 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20  ite) intsead of 
aa90: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d  the application.
aaa0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
aab0: 20 20 20 20 64 6f 6d 61 69 6e 20 62 61 73 65 20      domain base 
aac0: 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
aad0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
aae0: 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69      if (GetSetti
aaf0: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
ab10: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
ab20: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
ab30: 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29  , null) != null)
ab40: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
ab60: 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65  ectory = GetAsse
ab70: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
ab80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ab90: 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
aba0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
abc0: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20  rn directory;.. 
abd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
abe0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
abf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
ac00: 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61  therwise, fallba
ac10: 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ck on using the 
ac20: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
ac30: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  f the..         
ac40: 20 2f 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e   //       curren
ac50: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
ac60: 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  main...         
ac70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
ac80: 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e  eturn AppDomain.
ac90: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
aca0: 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65  seDirectory;..#e
acb0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lse..          /
acc0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
acd0: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
ace0: 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
acf0: 6e 67 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  ng the directory
ad00: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
ad10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ad20: 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78  the currently ex
ad30: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
ad40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
ad50: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
ad60: 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  n GetAssemblyDir
ad70: 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69  ectory();..#endi
ad80: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
ad90: 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
add0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
ade0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
adf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
ae00: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
ae10: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
ae20: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
ae30: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
ae40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
ae50: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
ae60: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
ae70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ae80: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ae90: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
aea0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
aeb0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
aec0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
aed0: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
aee0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
aef0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
af00: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
af10: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
af20: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
af30: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
af40: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
af50: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
af60: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
af70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
af80: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
af90: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
afa0: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
afb0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
afc0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
afd0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
afe0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
aff0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
b000: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
b010: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
b020: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b030: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 48             if (H
b040: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57  elperMethods.IsW
b050: 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  indows())..     
b060: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
b080: 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73   (!fileName.Ends
b090: 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65  With(DllFileExte
b0a0: 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  nsion,..        
b0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b0c0: 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73    StringComparis
b0d0: 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
b0e0: 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Case))..        
b0f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b110: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
b120: 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65  me + DllFileExte
b130: 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  nsion;..        
b140: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b150: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
b160: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b170: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
b180: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d  leName;..      }
b190: 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b1f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b200: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
b210: 72 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63  returns the proc
b220: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
b230: 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
b240: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  t..      /// pro
b250: 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  cess...      ///
b260: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b270: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
b280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
b290: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
b2a0: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
b2b0: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f  rrent process -O
b2c0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20  R- null if it.. 
b2d0: 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
b2e0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
b2f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
b300: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
b310: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
b320: 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72  g GetProcessorAr
b330: 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20  chitecture()..  
b340: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b350: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
b360: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
b370: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72  PreLoadSQLite_Pr
b380: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
b390: 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ure" environment
b3a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
b3b0: 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73       variable is
b3c0: 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72   set, use it ver
b3d0: 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75  batim for the cu
b3e0: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d  rrent processor.
b3f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
b400: 20 20 20 20 61 72 63 68 69 74 65 63 74 75 72 65      architecture
b410: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
b420: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
b430: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
b440: 74 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74  tecture = GetSet
b450: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
b460: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
b470: 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
b480: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 2c  orArchitecture",
b490: 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
b4a0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
b4b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 21  orArchitecture !
b4c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
b4d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72         return pr
b4e0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
b4f0: 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ure;....        
b500: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b510: 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20  // BUGBUG: Will 
b520: 74 68 69 73 20 61 6c 77 61 79 73 20 62 65 20 72  this always be r
b530: 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20  eliable?..      
b540: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
b550: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
b560: 74 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74  tecture = GetSet
b570: 74 69 6e 67 56 61 6c 75 65 28 50 52 4f 43 45 53  tingValue(PROCES
b580: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
b590: 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
b5a0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
b5f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b600: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b610: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b620: 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
b630: 43 68 65 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d  Check for an "im
b640: 70 6f 73 73 69 62 6c 65 22 20 73 69 74 75 61 74  possible" situat
b650: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 70 6f 69  ion.  If the poi
b660: 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20 20 20 20  nter size..     
b670: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
b680: 20 33 32 2d 62 69 74 73 2c 20 74 68 65 20 70 72   32-bits, the pr
b690: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
b6a0: 74 75 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 22  ture cannot be "
b6b0: 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20 20 20  AMD64"...       
b6c0: 20 20 20 2f 2f 20 20 20 20 20 20 20 49 6e 20 74     //       In t
b6d0: 68 61 74 20 63 61 73 65 2c 20 77 65 20 61 72 65  hat case, we are
b6e0: 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c   almost certainl
b6f0: 79 20 68 69 74 74 69 6e 67 20 61 20 62 75 67 20  y hitting a bug 
b700: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
b710: 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61    //       opera
b720: 74 69 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 2f  ting system and/
b730: 6f 72 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f  or Visual Studio
b740: 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65   that causes the
b750: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
b760: 20 20 20 20 20 50 52 4f 43 45 53 53 4f 52 5f 41       PROCESSOR_A
b770: 52 43 48 49 54 45 43 54 55 52 45 20 65 6e 76 69  RCHITECTURE envi
b780: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
b790: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
b7a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
b7b0: 20 20 20 20 77 72 6f 6e 67 20 76 61 6c 75 65 20      wrong value 
b7c0: 69 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74  in some circumst
b7d0: 61 6e 63 65 73 2e 20 20 50 6c 65 61 73 65 20 72  ances.  Please r
b7e0: 65 66 65 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a  efer to ticket..
b7f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
b800: 20 20 20 5b 39 61 63 39 38 36 32 36 31 31 5d 20     [9ac9862611] 
b810: 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f  for further info
b820: 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  rmation...      
b830: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
b840: 20 20 69 66 20 28 28 49 6e 74 50 74 72 2e 53 69    if ((IntPtr.Si
b850: 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74  ze == sizeof(int
b860: 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  )) &&..         
b870: 20 20 20 20 20 53 74 72 69 6e 67 2e 45 71 75 61       String.Equa
b880: 6c 73 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ls(processorArch
b890: 69 74 65 63 74 75 72 65 2c 20 22 41 4d 44 36 34  itecture, "AMD64
b8a0: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
b8b0: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
b8c0: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
b8d0: 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
b8e0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
b8f0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
b900: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
b910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
b920: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
b930: 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74   // NOTE: When t
b940: 72 61 63 69 6e 67 20 69 73 20 65 6e 61 62 6c 65  racing is enable
b950: 64 2c 20 73 61 76 65 20 74 68 65 20 6f 72 69 67  d, save the orig
b960: 69 6e 61 6c 6c 79 20 64 65 74 65 63 74 65 64 0d  inally detected.
b970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
b980: 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f  /       processo
b990: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 62  r architecture b
b9a0: 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 69  efore changing i
b9b0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
b9c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b9d0: 20 20 20 20 73 74 72 69 6e 67 20 73 61 76 65 64      string saved
b9e0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
b9f0: 63 74 75 72 65 20 3d 20 70 72 6f 63 65 73 73 6f  cture = processo
ba00: 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
ba10: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
ba20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ba30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
ba40: 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61 74 20  E: We know that 
ba50: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
ba60: 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 22 41  s that return "A
ba70: 4d 44 36 34 22 20 61 73 0d 0a 20 20 20 20 20 20  MD64" as..      
ba80: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
ba90: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
baa0: 72 63 68 69 74 65 63 74 75 72 65 20 61 72 65 20  rchitecture are 
bab0: 61 63 74 75 61 6c 6c 79 20 61 20 73 75 70 65 72  actually a super
bac0: 73 65 74 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  set of..        
bad0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
bae0: 68 65 20 22 78 38 36 22 20 70 72 6f 63 65 73 73  he "x86" process
baf0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 3b  or architecture;
bb00: 20 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75   therefore, retu
bb10: 72 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rn..            
bb20: 20 20 2f 2f 20 20 20 20 20 20 20 22 78 38 36 22    //       "x86"
bb30: 20 77 68 65 6e 20 74 68 65 20 70 6f 69 6e 74 65   when the pointe
bb40: 72 20 73 69 7a 65 20 69 73 20 33 32 2d 62 69 74  r size is 32-bit
bb50: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
bb60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
bb70: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
bb80: 68 69 74 65 63 74 75 72 65 20 3d 20 22 78 38 36  hitecture = "x86
bb90: 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  ";....#if !NET_C
bba0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
bbb0: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
bbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
bbe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bbf0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
bc00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
bc10: 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65 20  E: Show that we 
bc20: 68 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e 75  hit a fairly unu
bc30: 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20 28  sual situation (
bc40: 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  i.e...          
bc50: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
bc60: 20 74 68 65 20 22 77 72 6f 6e 67 22 20 70 72 6f   the "wrong" pro
bc70: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
bc80: 75 72 65 20 77 61 73 20 64 65 74 65 63 74 65 64  ure was detected
bc90: 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )...            
bca0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
bcb0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
bcc0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
bcd0: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
bce0: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
bcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
bd00: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
bd10: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
bd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd30: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
bd40: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 64 65 74  y pre-loader det
bd50: 65 63 74 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f  ected {0}-bit po
bd60: 69 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20  inter " +..     
bd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd80: 20 22 73 69 7a 65 20 77 69 74 68 20 70 72 6f 63   "size with proc
bd90: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
bda0: 72 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e  re \"{1}\", usin
bdb0: 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  g " +..         
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
bdd0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
bde0: 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73  ture \"{2}\" ins
bdf0: 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20  tead...",..     
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be10: 20 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20 38   IntPtr.Size * 8
be20: 20 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61 76   /* bits */, sav
be30: 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  edProcessorArchi
be40: 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  tecture,..      
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be60: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
be70: 63 74 75 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f  cture)); /* thro
be80: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
be90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
bea0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
beb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
bed0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bef0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
bf00: 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20    }..#else..    
bf10: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
bf20: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
bf30: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
bf40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bf50: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
bf60: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
bf70: 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  On the .NET Comp
bf80: 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61  act Framework, a
bf90: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
bfa0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
bfb0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
bfc0: 20 57 69 6e 33 32 20 41 50 49 20 66 75 6e 63 74   Win32 API funct
bfd0: 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b  ion (via P/Invok
bfe0: 65 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f 76  e) that can prov
bff0: 69 64 65 20 75 73 0d 0a 20 20 20 20 20 20 20 20  ide us..        
c000: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
c010: 69 74 68 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ith the processo
c020: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
c030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
c040: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c050: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
c060: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c070: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c090: 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74 70  / NOTE: The outp
c0a0: 75 74 20 6f 66 20 74 68 65 20 47 65 74 53 79 73  ut of the GetSys
c0b0: 74 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e  temInfo function
c0c0: 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20   will be..      
c0d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c0e0: 20 20 20 20 20 70 6c 61 63 65 64 20 68 65 72 65       placed here
c0f0: 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63  .  Only the proc
c100: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
c110: 72 65 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  re field..      
c120: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c130: 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20       is used by 
c140: 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  this method...  
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c160: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
c170: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
c180: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 53  veMethodsWin32.S
c190: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
c1a0: 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  mInfo;....      
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1d0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79    // NOTE: Query
c1e0: 20 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   the system info
c1f0: 72 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e  rmation via P/In
c200: 76 6f 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20 20  voke, thus..    
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c220: 20 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74         filling t
c230: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
c240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c250: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
c260: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
c270: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e  iveMethodsWin32.
c280: 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75  GetSystemInfo(ou
c290: 74 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a  t systemInfo);..
c2a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c2b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
c2c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
c2d0: 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72  E: Return the pr
c2e0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
c2f0: 74 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20  ture value as a 
c300: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
c310: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c330: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
c340: 65 63 74 75 72 65 20 3d 0d 0a 20 20 20 20 20 20  ecture =..      
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63  systemInfo.wProc
c370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
c380: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
c3b0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
c3c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c3d0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
c3e0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
c3f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c400: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c410: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
c420: 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65  TE: Upon failure
c430: 2c 20 72 65 74 75 72 6e 20 61 6e 20 65 6d 70 74  , return an empt
c440: 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20  y string.  This 
c450: 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20  will prevent..  
c460: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c470: 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67       the calling
c480: 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e   method from con
c490: 73 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65  sidering this me
c4a0: 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20  thod call a..   
c4b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
c4c0: 20 20 20 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a      "failure"...
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4f0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c500: 63 74 75 72 65 20 3d 20 53 74 72 69 6e 67 2e 45  cture = String.E
c510: 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  mpty;..         
c520: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
c530: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
c570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c580: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
c590: 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
c5a0: 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20  tecture;..      
c5b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
c610: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c620: 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70   /// Given the p
c630: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
c640: 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74  cture, returns t
c650: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70  he name of the p
c660: 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20  latform...      
c670: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c680: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
c690: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
c6a0: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
c6b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72        /// The pr
c6c0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
c6d0: 74 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73  ture to be trans
c6e0: 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66  lated to a platf
c6f0: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
c700: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c710: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
c720: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
c730: 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20  e platform name 
c740: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
c750: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
c760: 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75  itecture -OR- nu
c770: 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  ll..      /// if
c780: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
c790: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
c7a0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
c7b0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
c7c0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
c7d0: 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20  PlatformName(.. 
c7e0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c7f0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c800: 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  cture /* in */..
c810: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
c820: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c830: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
c840: 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
c850: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
c860: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
c870: 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f  tecture = GetPro
c880: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c890: 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re();....       
c8a0: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
c8b0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63  NullOrEmpty(proc
c8c0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
c8d0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
c8e0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
c8f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
c900: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
c910: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
c920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
c930: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
c940: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
c950: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
c960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c970: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
c980: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
c990: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  ng platformName;
c9a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c9b0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
c9c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
c9d0: 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65  orms.TryGetValue
c9e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c9f0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
ca00: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
ca10: 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  out platformName
ca20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ca30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ca40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c         return pl
ca50: 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20  atformName;..   
ca60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ca70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ca80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
ca90: 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ll;..      }....
caa0: 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
cae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
caf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
cb00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
cb10: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
cb20: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
cb30: 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64  te library based
cb40: 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65   on the specifie
cb50: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72  d..      /// dir
cb60: 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65  ectory and proce
cb70: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
cb80: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
cb90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cba0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
cbb0: 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e  "baseDirectory">
cbc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
cbd0: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 74  base directory t
cbe0: 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20  o use, null for 
cbf0: 64 65 66 61 75 6c 74 20 28 74 68 65 20 62 61 73  default (the bas
cc00: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a  e directory of..
cc10: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75        /// the cu
cc20: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
cc30: 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73  n domain).  This
cc40: 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c   directory shoul
cc50: 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  d contain the.. 
cc60: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
cc70: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
cc80: 73 70 65 63 69 66 69 63 20 73 75 62 2d 64 69 72  specific sub-dir
cc90: 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20  ectories...     
cca0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
ccb0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ccc0: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
ccd0: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
cce0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71       /// The req
ccf0: 75 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72  uested processor
cd00: 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e   architecture, n
cd10: 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20  ull for default 
cd20: 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  (the..      /// 
cd30: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
cd40: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
cd50: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20  rrent process). 
cd60: 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f   This caller sho
cd70: 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  uld..      /// a
cd80: 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65  lmost always spe
cd90: 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68  cify null for th
cda0: 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20  is parameter... 
cdb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
cdc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
cdd0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
cde0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e  ModuleFileName">
cdf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
ce00: 63 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65  candidate native
ce10: 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d   module file nam
ce20: 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62  e to load will b
ce30: 65 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a  e stored here,..
ce40: 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63        /// if nec
ce50: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
ce60: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ce70: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ce80: 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65  me="nativeModule
ce90: 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20  Handle">..      
cea0: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
ceb0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
cec0: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
ced0: 4c 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20  Library will be 
cee0: 73 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f  stored..      //
cef0: 2f 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73  / here, if neces
cf00: 73 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75  sary.  This valu
cf10: 65 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72  e will be IntPtr
cf20: 2e 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c  .Zero if the cal
cf30: 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l to..      /// 
cf40: 4c 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c  LoadLibrary fail
cf50: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
cf60: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
cf70: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
cf80: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
cf90: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  if the native mo
cfa0: 64 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20  dule was loaded 
cfb0: 73 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74  successfully; ot
cfc0: 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
cfd0: 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
cfe0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
cff0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
d000: 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f  tatic bool PreLo
d010: 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
d020: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
d030: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20  aseDirectory,   
d040: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
d050: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
d060: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
d070: 68 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a  hitecture,    /*
d080: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
d090: 20 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74    ref string nat
d0a0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
d0b0: 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  e, /* out */..  
d0c0: 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
d0d0: 74 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  tr nativeModuleH
d0e0: 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20  andle    /* out 
d0f0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
d100: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
d110: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d120: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
d130: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
d140: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
d150: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
d160: 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ult..          /
d170: 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74  /       (i.e. at
d180: 74 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74  tempt to automat
d190: 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74  ically detect it
d1a0: 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  )...          //
d1b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
d1c0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d  baseDirectory ==
d1d0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
d1e0: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
d1f0: 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44 69 72  ory = GetBaseDir
d200: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
d210: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d220: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
d230: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75   we failed to qu
d240: 65 72 79 20 74 68 65 20 62 61 73 65 20 64 69 72  ery the base dir
d250: 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77  ectory, stop now
d260: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
d270: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
d280: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  aseDirectory == 
d290: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d2a0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
d2b0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
d2c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
d2d0: 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65   NOTE: Determine
d2e0: 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e   the base file n
d2f0: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
d300: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
d310: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
d320: 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69         If this i
d330: 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74  s not known by t
d340: 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61  his class, we ca
d350: 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a  nnot continue...
d360: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d370: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
d380: 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65  ileNameOnly = Ge
d390: 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69  tNativeLibraryFi
d3a0: 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d  leNameOnly();...
d3b0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66  .          if (f
d3c0: 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e  ileNameOnly == n
d3d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
d3e0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
d3f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
d400: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
d410: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74  NOTE: If the nat
d420: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
d430: 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65  ry exists in the
d440: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d   base directory.
d450: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
d460: 20 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70      itself, stop
d470: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
d480: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
d490: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
d4a0: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
d4b0: 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
d4c0: 74 68 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  th(baseDirectory
d4d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d4e0: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
d4f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
d500: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
d510: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
d520: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
d530: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
d540: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d550: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
d560: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
d570: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
d580: 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  e is null, use t
d590: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
d5a0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d         default..
d5b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d5c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
d5d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
d5e0: 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
d5f0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
d600: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
d610: 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
d620: 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
d630: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
d640: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d650: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
d660: 74 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f  to query the pro
d670: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d680: 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ure, stop now...
d690: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d6a0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
d6b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d6c0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
d6d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d6e0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
d6f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d700: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
d710: 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20  d the full path 
d720: 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  and file name fo
d730: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
d740: 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ite..          /
d750: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
d760: 75 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  using the proces
d770: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
d780: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
d790: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d7a0: 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
d7b0: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
d7c0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79  eCombinePath(May
d7d0: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
d7f0: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f  seDirectory, pro
d800: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
d810: 72 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  re), fileNameOnl
d820: 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
d830: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d840: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
d850: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
d860: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
d870: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
d880: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
d890: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
d8a0: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
d8b0: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
d8c0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
d8d0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d8e0: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
d8f0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
d900: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d910: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d920: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d930: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
d940: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
d950: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
d960: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
d970: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d980: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d9a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d9b0: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
d9c0: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
d9d0: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
d9e0: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
d9f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
da00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
da10: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
da20: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
da30: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
da40: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
da50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da60: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
da70: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
da80: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
daa0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dad0: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
dae0: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
daf0: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
db00: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db20: 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79  //       library
db30: 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66   using the platf
db40: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
db50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
db60: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
db70: 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
db80: 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62  leName(MaybeComb
db90: 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d  inePath(MaybeCom
dba0: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
dbc0: 65 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74  eDirectory, plat
dbd0: 66 6f 72 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e  formName), fileN
dbe0: 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dc10: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69   NOTE: If the fi
dc20: 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  le does not exis
dc30: 74 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74  t, skip trying t
dc40: 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20  o load it...    
dc50: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
dc70: 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  !File.Exists(fil
dc80: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
dc90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
dca0: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
dcb0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
dcc0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
dcd0: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
dce0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
dcf0: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
dd00: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dd40: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
dd50: 53 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65  Show exactly whe
dd60: 72 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67  re we are trying
dd70: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
dd80: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
dd90: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
dda0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66  SQLite library f
ddb0: 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  rom...          
ddc0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
dde0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
ddf0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
de00: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
de30: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
de60: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 69  ary pre-loader i
de70: 73 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  s trying to load
de80: 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20   native " +..   
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dea0: 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61     "SQLite libra
deb0: 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20  ry \"{0}\"...", 
dec0: 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74  fileName)); /* t
ded0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
dee0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
def0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
df00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df20: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
df30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
df40: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
df50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
df70: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
df80: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
df90: 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20   library.  This 
dfa0: 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20  will either..   
dfb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
dfc0: 20 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c      return a val
dfd0: 69 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  id native module
dfe0: 20 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20   handle, return 
dff0: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
e000: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
e010: 20 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e       or throw an
e020: 20 65 78 63 65 70 74 69 6f 6e 2e 20 20 54 68 69   exception.  Thi
e030: 73 20 6d 75 73 74 20 75 73 65 20 74 68 65 20 61  s must use the a
e040: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
e050: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
e060: 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68     P/Invoke meth
e070: 6f 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  od for the curre
e080: 6e 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  nt operating sys
e090: 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  tem...          
e0a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e0b0: 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
e0c0: 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c  leFileName = fil
e0d0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
e0e0: 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
e0f0: 6c 65 48 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76  leHandle = Nativ
e100: 65 4c 69 62 72 61 72 79 48 65 6c 70 65 72 2e 4c  eLibraryHelper.L
e110: 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e  oadLibrary(fileN
e120: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
e130: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e         return (n
e140: 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
e150: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
e160: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
e170: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
e180: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52  T_20 && TRACE_PR
e190: 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20  ELOAD..         
e1a0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
e1b0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
e1c0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
e1d0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
e1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
e1f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
e200: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
e210: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
e220: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
e230: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e240: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e260: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c   // NOTE: First,
e270: 20 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57   grab the last W
e280: 69 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65  in32 error numbe
e290: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
e2a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
e2c0: 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73  lastError = Mars
e2d0: 68 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32  hal.GetLastWin32
e2e0: 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f  Error(); /* thro
e2f0: 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  w */....        
e300: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
e310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e320: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68  // NOTE: Show wh
e330: 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f  ere we failed to
e340: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
e350: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
e360: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
e370: 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d      library from
e380: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
e390: 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65  Win32 error code
e3a0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
e3b0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e3c0: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72   exception infor
e3d0: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
e3e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e400: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
e410: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
e420: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
e430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e440: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
e450: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
e460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e470: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
e480: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
e490: 72 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  r failed to load
e4a0: 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20   native " +..   
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4c0: 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61     "SQLite libra
e4d0: 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c  ry \"{0}\" (getL
e4e0: 61 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a  astError = {1}):
e4f0: 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {2}",..        
e500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
e510: 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f  leName, lastErro
e520: 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  r, e)); /* throw
e530: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
e540: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e550: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
e560: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e580: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
e590: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
e5a0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
e5b0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e5c0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
e5d0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e5e0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
e5f0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
e600: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
e650: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
e660: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e670: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
e680: 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43  E: On the .NET C
e690: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
e6a0: 2c 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74  , the native int
e6b0: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75  erop assembly mu
e6c0: 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  st..    //      
e6d0: 20 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65   be used because
e6e0: 20 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76   it provides sev
e6f0: 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73  eral workarounds
e700: 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74   to .NET Compact
e710: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46  ..    //       F
e720: 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74  ramework limitat
e730: 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66  ions important f
e740: 6f 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74  or proper operat
e750: 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d  ion of the core.
e760: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79  .    //       Sy
e770: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
e780: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28   functionality (
e790: 65 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20  e.g. being able 
e7a0: 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20  to bind..    // 
e7b0: 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73        parameters
e7c0: 20 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75   and handle colu
e7d0: 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70  mn values of typ
e7e0: 65 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75  es Int64 and Dou
e7f0: 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  ble)...    //.. 
e800: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
e810: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
e820: 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e  DLL = "SQLite.In
e830: 74 65 72 6f 70 2e 31 30 32 2e 64 6c 6c 22 3b 0d  terop.102.dll";.
e840: 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54  .#elif SQLITE_ST
e850: 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a  ANDARD..    //..
e860: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
e870: 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73  erwise, if the s
e880: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c  tandard SQLite l
e890: 69 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65  ibrary is enable
e8a0: 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20  d, use it...    
e8b0: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
e8c0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
e8d0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69  LITE_DLL = "sqli
e8e0: 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45  te3";..#elif USE
e8f0: 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20  _INTEROP_DLL..  
e900: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
e910: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
e920: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
e930: 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  te interop assem
e940: 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d  bly is enabled,.
e950: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
e960: 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  e it...    //.. 
e970: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
e980: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
e990: 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e  DLL = "SQLite.In
e9a0: 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c  terop.dll";..#el
e9b0: 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  se..    //..    
e9c0: 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79  // NOTE: Finally
e9d0: 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68  , assume that th
e9e0: 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73 73  e mixed-mode ass
e9f0: 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20 75  embly is being u
ea00: 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
ea10: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
ea20: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
ea30: 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74  LL = "System.Dat
ea40: 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a  a.SQLite.dll";..
ea50: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
ea60: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73   This section us
ea70: 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  es interop calls
ea80: 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68   that also fetch
ea90: 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20   text length to 
eaa0: 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73  optimize convers
eab0: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65  ion...    // Whe
eac0: 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e  n using the stan
ead0: 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e  dard dll, we can
eae0: 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63   replace these c
eaf0: 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c  alls with normal
eb00: 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e   sqlite calls an
eb10: 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f  d..    // do uno
eb20: 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73  ptimized convers
eb30: 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74  ions instead aft
eb40: 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65  erwards..    #re
eb50: 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64  gion interop add
eb60: 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61  ed textlength ca
eb70: 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  lls....#if !SQLI
eb80: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
eb90: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
eba0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
ebb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ebc0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
ebd0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
ebe0: 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  eter_name_intero
ebf0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
ec00: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
ec10: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
ec20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ec30: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
ec40: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ec50: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
ec60: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
ec70: 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
ec80: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ec90: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
eca0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
ecb0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ecc0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
ecd0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ece0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
ecf0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
ed00: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
ed10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
ed20: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
ed30: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
ed40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ed50: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ed60: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ed70: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
ed80: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e  lumn_decltype_in
ed90: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
eda0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
edb0: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
edc0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
edd0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
ede0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
edf0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
ee00: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
ee10: 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28  ltype16_interop(
ee20: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
ee30: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
ee40: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
ee50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ee60: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
ee70: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ee80: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
ee90: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65  column_name_inte
eea0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
eeb0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
eec0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
eed0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
eee0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
eef0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ef00: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
ef10: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
ef20: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
ef30: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
ef40: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
ef50: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
ef60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ef70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ef80: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
ef90: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
efa0: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74  _origin_name_int
efb0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
efc0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
efd0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
efe0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
eff0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f000: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f010: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
f020: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
f030: 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  in_name16_intero
f040: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
f050: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
f060: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
f070: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f080: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f090: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f0a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
f0b0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
f0c0: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
f0d0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
f0e0: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
f0f0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f100: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f110: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f120: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f130: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
f140: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f  mn_table_name16_
f150: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f160: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f170: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f180: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f190: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f1a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f1b0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f1c0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
f1d0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
f1e0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
f1f0: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
f200: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f210: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f220: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f230: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f240: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
f250: 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f  mn_text16_intero
f260: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
f270: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
f280: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
f290: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f2a0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f2b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f2c0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
f2d0: 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70  3_errmsg_interop
f2e0: 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20  (IntPtr db, ref 
f2f0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
f300: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f310: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f320: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f330: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
f340: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
f350: 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
f360: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70  Ptr db, IntPtr p
f370: 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c  Sql, int nBytes,
f380: 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74   ref IntPtr stmt
f390: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
f3a0: 52 65 6d 61 69 6e 2c 20 72 65 66 20 69 6e 74 20  Remain, ref int 
f3b0: 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20  nRemain);....   
f3c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f3d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f3e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f3f0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
f400: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62  Code sqlite3_tab
f410: 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61  le_column_metada
f420: 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ta_interop(IntPt
f430: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
f440: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
f450: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
f460: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
f470: 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
f480: 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
f490: 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
f4a0: 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
f4b0: 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
f4c0: 20 61 75 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e   autoInc, ref in
f4d0: 74 20 64 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74  t dtLen, ref int
f4e0: 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20   csLen);....    
f4f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f500: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
f510: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f520: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f530: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e  e3_value_text_in
f540: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
f550: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f560: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f570: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f580: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f590: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f5a0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
f5b0: 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  xt16_interop(Int
f5c0: 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c  Ptr p, ref int l
f5d0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
f5e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f5f0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
f600: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f610: 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  int sqlite3_mall
f620: 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28  oc_size_interop(
f630: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
f640: 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20  f INTEROP_LOG.. 
f650: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f660: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f670: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f680: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
f690: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
f6a0: 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f  onfig_log_intero
f6b0: 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65  p();..#endif..#e
f6c0: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
f6d0: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
f6e0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
f6f0: 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63     // These func
f700: 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74 69  tions add existi
f710: 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  ng functionality
f720: 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69 74   on top of SQLit
f730: 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61 20  e and require a 
f740: 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74 6f  little effort to
f750: 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f 72  ..    // get wor
f760: 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67 20  king when using 
f770: 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
f780: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
f790: 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f    #region intero
f7a0: 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f 6e  p added function
f7b0: 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51  ality....#if !SQ
f7c0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
f7d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f7e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f7f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f800: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f810: 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73 69  interop_libversi
f820: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  on();....    [Dl
f830: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f840: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
f850: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f860: 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f   IntPtr interop_
f870: 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20  sourceid();.... 
f880: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f890: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f8a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f8b0: 65 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65 72  extern int inter
f8c0: 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  op_compileoption
f8d0: 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70  _used(IntPtr zOp
f8e0: 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tName);....    [
f8f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f900: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f910: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f920: 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f  rn IntPtr intero
f930: 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  p_compileoption_
f940: 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20  get(int N);.... 
f950: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f960: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f970: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f980: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
f990: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
f9a0: 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lose_interop(Int
f9b0: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
f9c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f9d0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
f9e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f9f0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
fa00: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
fa10: 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65  te_function_inte
fa20: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
fa30: 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
fa40: 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54  nt nArgs, int nT
fa50: 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
fa60: 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  er, SQLiteCallba
fa70: 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43  ck func, SQLiteC
fa80: 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53  allback fstep, S
fa90: 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61  QLiteFinalCallba
faa0: 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e  ck ffinal, int n
fab0: 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a  eedCollSeq);....
fac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fad0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
fae0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
faf0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
fb00: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
fb10: 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70  finalize_interop
fb20: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
fb30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fb40: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fb50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fb60: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
fb70: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
fb80: 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f  3_backup_finish_
fb90: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62  interop(IntPtr b
fba0: 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b  ackup);....    [
fbb0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fbc0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
fbd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fbe0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
fbf0: 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  de sqlite3_open_
fc00: 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75  interop(byte[] u
fc10: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74  tf8Filename, byt
fc20: 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c  e[] vfsName, SQL
fc30: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
fc40: 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46   flags, int extF
fc50: 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72  uncs, ref IntPtr
fc60: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
fc70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fc80: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
fc90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fca0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fcb0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f   sqlite3_open16_
fcc0: 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75  interop(byte[] u
fcd0: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74  tf8Filename, byt
fce0: 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c  e[] vfsName, SQL
fcf0: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
fd00: 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46   flags, int extF
fd10: 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72  uncs, ref IntPtr
fd20: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
fd30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fd40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
fd50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fd60: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fd70: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69   sqlite3_reset_i
fd80: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
fd90: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
fda0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fdb0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
fdc0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fdd0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e  int sqlite3_chan
fde0: 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ges_interop(IntP
fdf0: 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  tr db);..#endif.
fe00: 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
fe10: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
fe20: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
fe30: 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61 70   The standard ap
fe40: 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e  i call equivalen
fe50: 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ts of the above 
fe60: 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
fe70: 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
fe80: 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ard versions of 
fe90: 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e  interop function
fea0: 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f  s....#if SQLITE_
feb0: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20  STANDARD....#if 
fec0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fed0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fee0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fef0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
ff00: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ff10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ff20: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
ff30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ff40: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ff50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ff60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
ff70: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
ff80: 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74  ite3_close(IntPt
ff90: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49  r db);....#if !I
ffa0: 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c  NTEROP_LEGACY_CL
ffb0: 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OSE..#if !PLATFO
ffc0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ffd0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ffe0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
fff0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10000 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10010 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10020 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10040 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10050 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10060 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10070 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
10080 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62  ose_v2(IntPtr db
10090 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f  ); /* 3.7.14+ */
100a0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
100b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
100c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
100d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
100e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
100f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10100 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10110 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10120 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10130 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10140 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10150 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10160 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10170 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
10180 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
10190 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20  byte[] strName, 
101a0 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e  int nArgs, int n
101b0 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
101c0 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  ser, SQLiteCallb
101d0 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65  ack func, SQLite
101e0 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20  Callback fstep, 
101f0 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62  SQLiteFinalCallb
10200 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a  ack ffinal);....
10210 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10220 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10230 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10240 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10250 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10260 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10270 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10280 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10290 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
102a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
102b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
102c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
102d0 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a   sqlite3_finaliz
102e0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  e(IntPtr stmt);.
102f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10300 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10310 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10320 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10330 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10340 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10350 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10360 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10370 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10380 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10390 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
103a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
103b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
103c0 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74 72  up_finish(IntPtr
103d0 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
103e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
103f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10400 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10410 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10420 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10430 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10440 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10450 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10460 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10470 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10480 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10490 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
104a0 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50  lite3_reset(IntP
104b0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
104c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
104d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
104e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
104f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10500 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10510 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10520 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10530 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10540 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10550 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10560 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10570 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
10580 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
10590 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
105a0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
105b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
105c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
105d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
105e0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
105f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10600 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10610 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10620 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10630 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10640 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10650 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10660 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10670 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
10680 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
10690 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
106a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
106b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
106c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
106d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
106e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
106f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10700 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10710 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10720 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10730 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10740 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
10750 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
10760 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
10770 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  me16(IntPtr stmt
10780 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
10790 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
107a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
107b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
107c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
107d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
107e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
107f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10800 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10810 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10820 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10830 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10840 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10850 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
10860 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10870 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
10880 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10890 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
108a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
108b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
108c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
108d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
108e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
108f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10900 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10910 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10920 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10930 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10940 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49  umn_decltype16(I
10950 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10960 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
10970 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10980 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10990 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
109a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
109b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
109c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
109d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
109e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
109f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10a00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10a10 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10a20 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
10a30 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
10a40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
10a50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10a60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10a70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10a80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10a90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10aa0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10ab0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10ac0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10ad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10ae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10af0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10b00 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
10b10 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
10b20 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10b30 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
10b40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10b50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10b60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10b70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10b80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10b90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10ba0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10bb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10bc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10bd0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10be0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10bf0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10c00 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28  umn_origin_name(
10c10 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
10c20 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
10c30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10c40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10c50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10c60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10c70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10c80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10c90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10ca0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10cb0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10cc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10cd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
10ce0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
10cf0 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
10d00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10d10 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
10d20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10d30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10d40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10d50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10d60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10d70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10d80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10d90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10da0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10db0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10dc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10dd0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10de0 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49  umn_table_name(I
10df0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10e00 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
10e10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10e20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10e30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10e40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10e50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10e60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10e70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10e80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10e90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10ea0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10eb0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10ec0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
10ed0 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49  n_table_name16(I
10ee0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10ef0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
10f00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10f10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10f20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10f30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10f40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10f60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10f70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10f80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10f90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10fa0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10fb0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
10fc0 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74  n_text(IntPtr st
10fd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
10fe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
110a0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
110b0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
110c0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
110d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
110e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
110f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11100 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11110 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11120 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11130 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11140 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11150 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11160 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11170 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11180 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
11190 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  msg(IntPtr db);.
111a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
111b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
111c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
111d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
111e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
111f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11200 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11210 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11220 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11230 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11240 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11250 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
11260 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
11270 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  are(IntPtr db, I
11280 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
11290 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50  nBytes, ref IntP
112a0 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74  tr stmt, ref Int
112b0 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d  Ptr ptrRemain);.
112c0 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50 41  ...#if USE_PREPA
112d0 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41 54  RE_V2..#if !PLAT
112e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
112f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11300 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11310 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11320 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11330 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11340 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11350 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11360 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11370 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11380 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
11390 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
113a0 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50 74  prepare_v2(IntPt
113b0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
113c0 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72  l, int nBytes, r
113d0 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ef IntPtr stmt, 
113e0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65  ref IntPtr ptrRe
113f0 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  main);..#endif..
11400 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11410 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11430 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11440 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11460 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11470 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11480 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11490 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
114a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
114b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
114c0 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65  de sqlite3_table
114d0 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61  _column_metadata
114e0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
114f0 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
11500 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
11510 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
11520 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
11530 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
11540 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
11550 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
11560 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
11570 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b  ef int autoInc);
11580 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11590 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
115a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
115b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
115c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
115d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
115e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
115f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11600 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11610 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11620 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11630 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
11640 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49  te3_value_text(I
11650 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
11660 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11670 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11680 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11690 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
116a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
116b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
116c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
116d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
116e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
116f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11700 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11710 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
11720 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  ue_text16(IntPtr
11730 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a   p);....#endif..
11740 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54      // SQLITE_ST
11750 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
11760 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
11770 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  // These functio
11780 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e  ns are custom an
11790 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61  d have no equiva
117a0 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69  lent standard li
117b0 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20  brary method... 
117c0 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65     // All of the
117d0 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68  m are "nice to h
117e0 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65  aves" and not ne
117f0 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20  cessarily "need 
11800 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20  to haves"...    
11810 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76  #region no equiv
11820 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d  alent standard m
11830 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51  ethod....#if !SQ
11840 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
11850 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11860 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11870 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11880 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
11890 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
118a0 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28  collseq_interop(
118b0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
118c0 72 65 66 20 69 6e 74 20 74 79 70 65 2c 20 72 65  ref int type, re
118d0 66 20 69 6e 74 20 65 6e 63 2c 20 72 65 66 20 69  f int enc, ref i
118e0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
118f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11900 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
11910 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11920 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
11930 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70  context_collcomp
11940 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  are_interop(IntP
11950 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
11960 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e  [] p1, int p1len
11970 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74  , byte[] p2, int
11980 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20   p2len);....    
11990 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
119a0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
119b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
119c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
119d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72 73  ode sqlite3_curs
119e0 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70  or_rowid_interop
119f0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11a00 74 20 63 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f  t cursor, ref lo
11a10 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20  ng rowid);....  
11a20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11a30 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11a40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11a50 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
11a60 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69 6e  rCode sqlite3_in
11a70 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f  dex_column_info_
11a80 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
11a90 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f  b, byte[] catalo
11aa0 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e  g, byte[] IndexN
11ab0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75  ame, byte[] Colu
11ac0 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20  mnName, ref int 
11ad0 73 6f 72 74 4f 72 64 65 72 2c 20 72 65 66 20 69  sortOrder, ref i
11ae0 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20  nt onError, ref 
11af0 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e  IntPtr Collation
11b00 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65  , ref int collle
11b10 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
11b20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11b30 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
11b40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
11b50 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65  nt sqlite3_table
11b60 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28  _cursor_interop(
11b70 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11b80 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f   db, int tableRo
11b90 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64  otPage);....#end
11ba0 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53  if..// !SQLITE_S
11bb0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
11bc0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
11bd0 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49   // Standard API
11be0 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63   calls global ac
11bf0 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20  ross versions.  
11c00 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20  There are a few 
11c10 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74  instances of int
11c20 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20  erop calls..    
11c30 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20  // scattered in 
11c40 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61  here, but they a
11c50 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77  re only active w
11c60 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  hen PLATFORM_COM
11c70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73  PACTFRAMEWORK is
11c80 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
11c90 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64  #region standard
11ca0 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c   sqlite api call
11cb0 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  s....#if !PLATFO
11cc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11cd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11ce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11cf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11d00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11d10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11d20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11d30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11d40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11d50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11d60 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11d70 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
11d80 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11d90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11da0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11db0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11dc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11dd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11de0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11df0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11e10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11e20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11e30 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
11e40 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
11e50 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  mber();....#if !
11e60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11e70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11e80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11e90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11ea0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11eb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11ec0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11ed0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11ee0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11ef0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11f00 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11f10 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  tr sqlite3_sourc
11f20 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eid();....#if !P
11f30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11f40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11f50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11f60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11f70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11f80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11f90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11fa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11fb0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11fc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11fd0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
11fe0 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
11ff0 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
12000 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23   zOptName);....#
12010 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12020 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12030 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12040 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12050 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12060 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12070 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12080 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12090 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
120a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
120b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
120c0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
120d0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
120e0 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20  (int N);....#if 
120f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12100 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12110 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12120 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12130 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12140 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12150 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12160 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12170 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12180 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12190 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
121a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
121b0 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72  ite3_enable_shar
121c0 65 64 5f 63 61 63 68 65 28 0d 0a 20 20 20 20 20  ed_cache(..     
121d0 20 20 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d     int enable);.
121e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
121f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12200 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12210 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12220 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12230 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12240 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12250 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12260 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12270 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12280 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12290 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
122a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  ode sqlite3_enab
122b0 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
122c0 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
122d0 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c  tr db, int enabl
122e0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
122f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12300 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12310 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12320 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12330 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12340 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12350 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12360 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12370 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12380 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12390 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
123a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
123b0 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d  load_extension(.
123c0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
123d0 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e  db, byte[] fileN
123e0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63  ame, byte[] proc
123f0 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
12400 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66   pError);....#if
12410 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12420 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12430 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12440 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12450 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12460 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12470 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12480 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12490 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
124a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
124b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
124c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
124d0 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66  lite3_overload_f
124e0 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  unction(IntPtr d
124f0 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c  b, IntPtr zName,
12500 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a   int nArgs);....
12510 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66  #if WINDOWS..#if
12520 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12530 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12540 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12550 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12560 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12570 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12580 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
12590 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
125a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
125b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
125c0 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
125d0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
125e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
125f0 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
12600 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
12610 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20  _set_directory" 
12620 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
12630 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
12640 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
12650 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
12660 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f  Windows...    //
12670 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12680 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
12690 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
126a0 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
126b0 69 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79  irectory(uint ty
126c0 70 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65  pe, string value
126d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47  );....#if !DEBUG
126e0 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64   // NOTE: Should
126f0 20 62 65 20 22 57 49 4e 33 32 48 45 41 50 20 26   be "WIN32HEAP &
12700 26 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69  & !MEMDEBUG"..#i
12710 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12720 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12730 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12740 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12750 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12770 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12790 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
127a0 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
127b0 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
127c0 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65  lite3_win32_rese
127d0 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63  t_heap" SQLite c
127e0 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
127f0 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
12800 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
12810 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20  rted on Windows 
12820 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e  when the Win32 n
12830 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20  ative allocator 
12840 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20  is in..    //   
12850 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79      use (i.e. by
12860 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65   default, in "Re
12870 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66  lease" builds of
12880 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
12890 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ite..    //     
128a0 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66    only).  By def
128b0 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22  ault, in "Debug"
128c0 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
128d0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74  m.Data.SQLite, t
128e0 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
128f0 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61   MEMDEBUG alloca
12900 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20  tor is used...  
12910 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
12920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12930 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12940 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72   sqlite3_win32_r
12950 65 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a  eset_heap();....
12960 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12970 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12980 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12990 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
129a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
129b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
129c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
129d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
129e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
129f0 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  ndif..    //..  
12a00 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22    // NOTE: The "
12a10 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f  sqlite3_win32_co
12a20 6d 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69  mpact_heap" SQLi
12a30 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
12a40 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20  function is..   
12a50 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73   //       only s
12a60 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64  upported on Wind
12a70 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e  ows when the Win
12a80 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61  32 native alloca
12a90 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f  tor is in..    /
12aa0 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65  /       use (i.e
12ab0 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e  . by default, in
12ac0 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64   "Release" build
12ad0 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
12ae0 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20  .SQLite..    // 
12af0 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79        only).  By
12b00 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65   default, in "De
12b10 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53  bug" builds of S
12b20 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
12b30 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  e, the..    //  
12b40 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c       MEMDEBUG al
12b50 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e  locator is used.
12b60 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
12b70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12b80 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
12b90 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
12ba0 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28  32_compact_heap(
12bb0 72 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74  ref uint largest
12bc0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64  );..#endif..#end
12bd0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
12be0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12bf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12c00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12c10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12c20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12c30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12c40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12c50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12c60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12c70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12c80 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
12c90 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74  lite3_malloc(int
12ca0 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   n);....#if !PLA
12cb0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12cc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12cd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ce0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12cf0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12d00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12d10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12d20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12d30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12d40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12d50 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12d60 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
12d70 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29  IntPtr p, int n)
12d80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12d90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12da0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12db0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12dc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12dd0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12de0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12df0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12e00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12e10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12e20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12e30 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
12e40 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20 70  e3_free(IntPtr p
12e50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12e60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12e70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12e80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12e90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12ea0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12eb0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12ec0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12ed0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12ee0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12ef0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12f00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12f10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
12f20 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74  pen_v2(byte[] ut
12f30 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20  f8Filename, ref 
12f40 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
12f50 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
12f60 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66 73  lags, byte[] vfs
12f70 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
12f80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12f90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12fa0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12fb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12fc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12fd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12fe0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
12ff0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
13000 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13010 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13020 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
13030 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
13040 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13050 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13060 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13070 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
13080 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
13090 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b   ref IntPtr db);
130a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
130b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
130c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
130d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
130e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
130f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13100 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13110 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13120 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13130 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13140 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13150 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
13160 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50  3_interrupt(IntP
13170 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
13180 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13190 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
131a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
131b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
131c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
131d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
131e0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
131f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13200 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73  long sqlite3_las
13210 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49  t_insert_rowid(I
13220 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
13230 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
13240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13250 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13270 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13280 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13290 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
132a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
132b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
132c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
132d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
132e0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
132f0 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74  e3_changes(IntPt
13300 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
13310 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13320 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13330 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13340 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13350 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13360 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13370 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
13380 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
13390 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
133a0 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64  ry_used();..#end
133b0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
133c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
133d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
133e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
133f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13400 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13410 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13420 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13430 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
13440 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
13450 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73  ighwater(int res
13460 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66  etFlag);..#endif
13470 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13480 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13490 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
134a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
134b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
134c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
134d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
134e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
134f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13500 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13510 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13520 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
13530 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75  Code sqlite3_shu
13540 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20  tdown();....#if 
13550 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13560 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13570 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13580 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13590 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
135a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
135b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
135c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
135d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
135e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
135f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13600 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13610 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
13620 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  t(IntPtr db, int
13630 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   ms);....#if !PL
13640 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13650 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13660 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13670 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13680 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13690 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
136a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
136b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
136c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
136d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
136e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
136f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13700 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73  3_clear_bindings
13710 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
13720 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13730 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13740 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13750 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13770 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13780 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13790 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
137a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
137b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
137c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
137d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
137e0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
137f0 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
13800 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74  , int index, Byt
13810 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
13820 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72  Size, IntPtr nTr
13830 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66  ansient);....#if
13840 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13850 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13860 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13870 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13880 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13890 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
138a0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
138b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
138c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
138d0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
138e0 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
138f0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f  t, int index, do
13900 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
13910 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
13920 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13930 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13940 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13950 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13960 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13970 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13980 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
139a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
139b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
139c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
139d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
139e0 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72  _bind_int(IntPtr
139f0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
13a00 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
13a10 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
13a20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
13a30 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
13a40 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b  lite3_bind_int";
13a50 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
13a60 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
13a70 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
13a80 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
13a90 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69   unsigned (32-bi
13aa0 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
13ab0 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
13ac0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13ad0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13ae0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13af0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
13b00 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c  lite3_bind_int",
13b10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13b20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13b30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13b40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13b50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13b60 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
13b70 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
13b80 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
13b90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13ba0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13bb0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13bc0 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72  bind_uint(IntPtr
13bd0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
13be0 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  , uint value);..
13bf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13c00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13c10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13c20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13c30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13c40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13c50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
13c60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13c70 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13c80 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
13c90 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ind_int64(IntPtr
13ca0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
13cb0 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
13cc0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
13cd0 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
13ce0 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
13cf0 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
13d00 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65  ind_int64"; howe
13d10 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
13d20 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
13d30 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
13d40 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
13d50 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69  gned long (64-bi
13d60 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
13d70 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
13d80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13d90 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13da0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13db0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
13dc0 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
13dd0 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
13de0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13df0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13e00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13e10 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13e20 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13e30 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
13e40 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
13e50 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76  t index, ulong v
13e60 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
13e70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13e80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13e90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13ea0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13eb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13ec0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13ed0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13ee0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13ef0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13f00 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13f10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13f20 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
13f30 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
13f40 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74  null(IntPtr stmt
13f50 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
13f60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13f70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13f80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13f90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13fb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13fc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13fd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13fe0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13ff0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14000 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14010 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
14020 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
14030 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
14040 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65   int index, byte
14050 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c  [] value, int nl
14060 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
14070 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
14080 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14090 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
140a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
140b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
140c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
140d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
140e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
140f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14100 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14110 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14120 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
14130 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
14140 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74  ameter_count(Int
14150 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
14160 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14170 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14180 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14190 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
141a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
141b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
141c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
141d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
141e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
141f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14200 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
14210 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
14220 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
14230 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74  IntPtr stmt, byt
14240 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d  e[] strName);...
14250 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14260 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14280 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
142a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
142b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
142c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
142d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
142e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
142f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14300 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
14310 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74  lumn_count(IntPt
14320 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
14330 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14340 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14350 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14360 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14370 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14380 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14390 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
143a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
143b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
143c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
143d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
143e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
143f0 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72  ite3_step(IntPtr
14400 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
14410 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14420 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14430 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14440 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14450 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14460 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14470 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14480 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14490 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
144a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
144b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
144c0 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
144d0 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74 6d  donly(IntPtr stm
144e0 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f  t); /* 3.7.4+ */
144f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14500 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14510 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14520 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14530 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14540 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14550 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
14560 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14570 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
14580 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
14590 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
145a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
145b0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
145c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
145d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
145e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
145f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14600 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14610 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14620 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14630 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14640 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14650 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14660 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
14670 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
14680 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
14690 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
146a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
146b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
146c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
146d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
146e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
146f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14700 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
14710 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14720 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
14730 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74  column_int64(Int
14740 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14750 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dex);..#endif...
14760 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14770 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14780 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14790 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
147a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
147b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
147c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
147d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
147e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
147f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14800 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14810 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14820 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74  _column_blob(Int
14830 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14840 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
14850 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14860 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14870 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14880 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14890 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
148a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
148b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
148c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
148d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
148e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
148f0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
14900 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
14910 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  es(IntPtr stmt, 
14920 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
14930 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14940 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14950 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14960 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14970 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14980 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14990 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
149a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
149b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
149c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
149d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
149e0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
149f0 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  mn_bytes16(IntPt
14a00 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14a10 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
14a20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14a30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14a40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14a50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14a60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14a70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14a80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14a90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14aa0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14ab0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14ac0 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
14ad0 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
14ae0 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
14af0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
14b00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14b10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14b20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14b30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14b40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14b50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14b60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14b70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14b80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14b90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14ba0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14bb0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
14bc0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
14bd0 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49  eate_collation(I
14be0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
14bf0 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54   strName, int nT
14c00 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
14c10 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74  er, SQLiteCollat
14c20 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69  ion func);....#i
14c30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14c40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14c50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14c60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14c70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14c80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14c90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
14ca0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14cb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
14cc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
14cd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
14ce0 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  nt sqlite3_aggre
14cf0 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74  gate_count(IntPt
14d00 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
14d10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14d20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14d30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14d40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14d50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14d60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14d70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14d80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14d90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14da0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14db0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14dc0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
14dd0 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
14de0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
14df0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14e00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14e10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14e20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14e30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14e40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14e50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14e60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14e70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14e80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14e90 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
14ea0 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
14eb0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
14ec0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14ed0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14ef0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14f00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14f10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14f20 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14f30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14f40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14f50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14f60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14f70 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
14f80 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  e_bytes16(IntPtr
14f90 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
14fa0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14fb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14fc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14fd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14fe0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14ff0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15000 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15010 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75  tatic extern dou
15020 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ble sqlite3_valu
15030 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  e_double(IntPtr 
15040 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  p);..#endif....#
15050 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15060 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15080 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15090 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
150a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
150b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
150c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
150d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
150e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
150f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15100 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
15110 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b  e_int(IntPtr p);
15120 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15130 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15140 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15150 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15160 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15170 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15180 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
15190 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
151a0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
151b0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
151c0 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65  4(IntPtr p);..#e
151d0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
151e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
151f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15200 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15210 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15220 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15230 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15240 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15250 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15260 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15270 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15280 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
15290 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61  inity sqlite3_va
152a0 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20  lue_type(IntPtr 
152b0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
152c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
152d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
152e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
152f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15300 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15310 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15320 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
15330 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15340 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
15350 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15360 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
15370 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
15380 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
15390 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
153a0 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
153b0 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
153c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
153d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
153e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
153f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15400 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
15430 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15440 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
15450 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
15460 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
15470 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
15480 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
15490 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
154a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
154b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
154c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
154d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
154e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
154f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15500 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15510 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15520 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15530 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15540 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
15550 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e  error(IntPtr con
15560 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  text, byte[] str
15570 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  Err, int nLen);.
15580 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15590 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
155a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
155b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
155c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
155d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
155e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
155f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15600 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15610 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15620 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15630 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
15640 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f  _result_error_co
15650 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  de(IntPtr contex
15660 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  t, SQLiteErrorCo
15670 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  de value);....#i
15680 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15690 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
156a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
156b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
156c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
156d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
156e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
156f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15700 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15710 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15720 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
15730 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
15740 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
15750 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
15760 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15770 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15780 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15790 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
157a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
157b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
157c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
157d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
157e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
157f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15800 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15810 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
15820 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e  3_result_error_n
15830 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74  omem(IntPtr cont
15840 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
15850 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15860 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15870 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15880 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15890 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
158a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
158b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
158c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
158d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
158e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
158f0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
15900 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
15910 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lue(IntPtr conte
15920 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65  xt, IntPtr value
15930 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15940 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15950 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15960 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15970 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15980 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15990 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
159a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
159b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
159c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
159d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
159e0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
159f0 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62  te3_result_zerob
15a00 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
15a10 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  xt, int nLen);..
15a20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15a30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15a40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15a50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15a60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15a70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15a80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15a90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15aa0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15ab0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15ac0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15ad0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
15ae0 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74  result_int(IntPt
15af0 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76  r context, int v
15b00 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
15b10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15b20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15b30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15b40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15b50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15b60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15b70 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
15b80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
15b90 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
15ba0 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  lt_int64(IntPtr 
15bb0 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61  context, long va
15bc0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
15bd0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15be0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15bf0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15c00 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15c10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15c20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15c30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15c40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15c50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15c60 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15c70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15c80 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
15c90 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74  esult_null(IntPt
15ca0 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
15cb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15cc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15cd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15ce0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15cf0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15d00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15d10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
15d20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15d30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
15d40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
15d50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15d60 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
15d70 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ult_text(IntPtr 
15d80 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
15d90 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  value, int nLen,
15da0 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
15db0 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
15dc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15dd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15de0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15df0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15e00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15e10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15e20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15e40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15e50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15e60 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
15e70 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
15e80 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72  e_context(IntPtr
15e90 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42   context, int nB
15ea0 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ytes);....#if !P
15eb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15ec0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15ed0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15ee0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15ef0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15f00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15f10 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
15f20 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
15f30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15f40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15f50 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
15f60 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
15f70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15f80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15f90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15fa0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
15fb0 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  xt16(IntPtr stmt
15fc0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72  , int index, str
15fd0 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  ing value, int n
15fe0 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
15ff0 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
16000 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16010 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16020 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16030 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16040 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16050 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16060 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
16070 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
16080 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
16090 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
160a0 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
160b0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
160c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
160d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
160e0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
160f0 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49  result_error16(I
16100 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
16110 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
16120 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
16130 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16140 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16150 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16160 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16170 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16180 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16190 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
161a0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
161b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
161c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
161d0 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
161e0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
161f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16200 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16210 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16220 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49  _result_text16(I
16230 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73  ntPtr context, s
16240 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69  tring strName, i
16250 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
16260 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
16270 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45  #if INTEROP_CODE
16280 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43  C || INTEROP_INC
16290 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21 50  LUDE_SEE..#if !P
162a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
162b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
162c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
162d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
162e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
162f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16340 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16350 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16360 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62  e3_key(IntPtr db
16370 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
16380 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69  t keylen);....#i
16390 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
163a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
163b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
163c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
163d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
163e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
163f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16400 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16410 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16420 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16430 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
16440 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
16450 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74  qlite3_rekey(Int
16460 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
16470 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
16480 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
16490 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f  INTEROP_INCLUDE_
164a0 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c 41  ZIPVFS..#if !PLA
164b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
164c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
164d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
164e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
164f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16500 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16510 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16520 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16530 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16540 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16550 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69  c extern void zi
16560 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a  pvfsInit_v2();..
16570 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16580 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16590 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
165a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
165b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
165c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
165d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
165e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
165f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16600 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16610 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16620 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e  rn void zipvfsIn
16630 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66 6c  it_v3(int regDfl
16640 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  t);..#endif....#
16650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
166a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
166b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
166c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
166d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
166e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
166f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16700 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f  void sqlite3_pro
16710 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e  gress_handler(In
16720 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70 73  tPtr db, int ops
16730 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73  , SQLiteProgress
16740 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
16750 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
16760 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16770 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16780 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16790 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
167a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
167b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
167c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
167d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
167e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
167f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16800 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16810 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
16820 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
16830 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
16840 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c  teAuthorizerCall
16850 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
16860 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
16870 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16880 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16890 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
168a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
168b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
168c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
168d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
168e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
168f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16900 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16910 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
16920 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75 70  ntPtr sqlite3_up
16930 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  date_hook(IntPtr
16940 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61 74   db, SQLiteUpdat
16950 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
16960 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
16970 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16990 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
169a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
169b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
169c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
169d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
169e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
169f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16a00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16a10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16a20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
16a30 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49  e3_commit_hook(I
16a40 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
16a50 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
16a60 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
16a70 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
16a80 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16a90 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16aa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16ab0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16ac0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16ad0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16ae0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16af0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16b00 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16b10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16b20 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
16b30 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49 6e  sqlite3_trace(In
16b40 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54  tPtr db, SQLiteT
16b50 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  raceCallback fun
16b60 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
16b70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e  );....    // Sin
16b80 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  ce sqlite3_confi
16b90 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69  g() takes a vari
16ba0 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69  able argument li
16bb0 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f  st, we have to o
16bc0 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74  verload declarat
16bd0 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72  ions..    // for
16be0 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61   all possible ca
16bf0 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e 74  lls that we want
16c00 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21 50   to use...#if !P
16c10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16c20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16c30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16c40 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
16c50 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
16c60 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
16c70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16c80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16c90 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16ca0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16cb0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
16cc0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
16cd0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
16ce0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16cf0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
16d00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
16d10 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c  _config_none(SQL
16d20 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
16d30 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   op);....#if !PL
16d40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16d50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16d60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16d70 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
16d80 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
16d90 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
16da0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16db0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16dc0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16de0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
16df0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
16e00 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
16e10 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16e20 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
16e30 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
16e40 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69 74  config_int(SQLit
16e50 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
16e60 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  p, int value);..
16e70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16e80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16e90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16ea0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
16eb0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
16ec0 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
16ed0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16ee0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16ef0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
16f00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16f10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
16f20 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
16f30 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
16f40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
16f50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16f60 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16f70 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
16f80 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  log(SQLiteConfig
16f90 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69  OpsEnum op, SQLi
16fa0 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75  teLogCallback fu
16fb0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
16fc0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
16fd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16fe0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17000 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
17010 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
17020 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
17030 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17040 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17050 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17070 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
17080 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  = "sqlite3_db_co
17090 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
170a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
170b0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
170c0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
170d0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e  te3_db_config_in
170e0 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20  t_refint(IntPtr 
170f0 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67  db, SQLiteConfig
17100 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e  DbOpsEnum op, in
17110 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74  t value, ref int
17120 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66   result);....#if
17130 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17140 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17150 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17160 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17170 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17180 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17190 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
171a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
171b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
171c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
171d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
171e0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c  tPtr sqlite3_rol
171f0 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74  lback_hook(IntPt
17200 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c  r db, SQLiteRoll
17210 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e  backCallback fun
17220 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
17230 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17250 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17270 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17280 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17290 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
172a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
172b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
172c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
172d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
172e0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
172f0 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28  lite3_db_handle(
17300 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
17310 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17320 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17340 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17390 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
173a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
173b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
173c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
173d0 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c  e sqlite3_db_rel
173e0 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50  ease_memory(IntP
173f0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
17400 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17410 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17420 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17430 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17440 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17450 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17460 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17470 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17480 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17490 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
174a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
174b0 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  tr sqlite3_db_fi
174c0 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62  lename(IntPtr db
174d0 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29  , IntPtr dbName)
174e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
174f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17500 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17510 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17520 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
17530 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
17540 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  e", CallingConve
17550 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17560 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17570 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17590 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
175a0 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  = "sqlite3_db_fi
175b0 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69  lename")]..#endi
175c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
175d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
175e0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
175f0 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49  filename_bytes(I
17600 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
17610 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
17620 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17630 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17640 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17650 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17660 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17670 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17680 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17690 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
176a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
176b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
176c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
176d0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78  tPtr sqlite3_nex
176e0 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62  t_stmt(IntPtr db
176f0 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  , IntPtr stmt);.
17700 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17710 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17720 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17730 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17740 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17750 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17760 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17770 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17780 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17790 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
177a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
177b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
177c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  ode sqlite3_exec
177d0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
177e0 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74  [] strSql, IntPt
177f0 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e  r pvCallback, In
17800 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65  tPtr pvParam, re
17810 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  f IntPtr errMsg)
17820 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17830 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17840 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17850 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17870 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17880 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17890 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
178a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
178b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
178c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
178d0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
178e0 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79  3_release_memory
178f0 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d  (int nBytes);...
17900 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17910 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17930 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17950 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17960 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17970 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17980 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17990 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
179a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
179b0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65  n int sqlite3_ge
179c0 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74  t_autocommit(Int
179d0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
179e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
179f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17a00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17a10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17a20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17a30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17a40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17a50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17a60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17a70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17a80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17a90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17aa0 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65  ite3_extended_re
17ab0 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74  sult_codes(IntPt
17ac0 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29  r db, int onoff)
17ad0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17ae0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17af0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17b00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17b20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17b30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17b40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17b50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17b60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17b70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17b80 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17b90 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72  rCode sqlite3_er
17ba0 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
17bb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17bc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17bd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17be0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17bf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17c00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17c10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17c20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17c30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17c40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17c60 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17c70 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
17c80 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49  tended_errcode(I
17c90 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
17ca0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17cb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17cc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17cd0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17ce0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17cf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17d00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17d10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17d20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17d30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17d40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17d50 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
17d60 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72  rstr(SQLiteError
17d70 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37  Code rc); /* 3.7
17d80 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f  .15+ */....    /
17d90 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
17da0 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76 61  log() takes a va
17db0 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20  riable argument 
17dc0 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f  list, we have to
17dd0 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72   overload declar
17de0 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66  ations..    // f
17df0 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  or all possible 
17e00 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c  calls.  For now,
17e10 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70   we are only exp
17e20 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73  osing a single s
17e30 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20  tring, and..    
17e40 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65  // depend on the
17e50 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61   caller to forma
17e60 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23  t the string...#
17e70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17e80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17e90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17ea0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17eb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17ec0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17ed0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17ee0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17ef0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17f00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17f10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17f20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67  void sqlite3_log
17f30 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  (SQLiteErrorCode
17f40 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b   iErrCode, byte[
17f50 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23  ] zFormat);....#
17f60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17f70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17f80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17f90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17fa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17fb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17fc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17fe0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17ff0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18000 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18010 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18020 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
18030 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20  trol(IntPtr db, 
18040 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20  byte[] zDbName, 
18050 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70  int op, IntPtr p
18060 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Arg);....#if !PL
18070 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18080 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18090 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
180a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
180b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
180c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
180d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
180e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
180f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18100 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18110 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18120 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
18130 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73 74  init(IntPtr dest
18140 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74  Db, byte[] zDest
18150 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75  Name, IntPtr sou
18160 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53  rceDb, byte[] zS
18170 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ourceName);....#
18180 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18190 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
181a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
181b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
181c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
181d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
181e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
181f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18200 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18210 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18220 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18230 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18240 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73  sqlite3_backup_s
18250 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75  tep(IntPtr backu
18260 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a  p, int nPage);..
18270 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18280 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18290 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
182a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
182b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
182c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
182d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
182e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
182f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18300 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
18310 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18320 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
18330 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28  ackup_remaining(
18340 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
18350 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18370 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18390 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
183a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
183b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
183c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
183d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
183e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
183f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18400 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
18410 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74  backup_pagecount
18420 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
18430 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18450 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18470 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18480 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18490 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
184a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
184b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
184c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
184d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
184e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
184f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63  Code sqlite3_dec
18500 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72  lare_vtab(IntPtr
18510 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c   db, IntPtr zSQL
18520 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18540 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18560 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18570 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18580 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18590 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
185a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
185b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
185c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
185d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
185e0 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e  lite3_mprintf(In
185f0 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61  tPtr format, __a
18600 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65  rglist);..    #e
18610 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18620 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61  // SQLite API ca
18630 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  lls that are pro
18640 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b  vided by "well-k
18650 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73  nown" extensions
18660 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61   that may be sta
18670 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20  tically..    // 
18680 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20  linked with the 
18690 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69  SQLite core nati
186a0 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65  ve library curre
186b0 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ntly in use...  
186c0 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73    #region extens
186d0 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63  ion sqlite api c
186e0 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  alls..#if INTERO
186f0 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
18700 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18710 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18720 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18730 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18740 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18750 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18760 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18770 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18780 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18790 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
187a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
187b0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
187c0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
187d0 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  le_module(IntPtr
187e0 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
187f0 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f  , ref sqlite3_mo
18800 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74  dule module, Int
18810 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
18820 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
18830 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69  xDestroy);....#i
18840 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18850 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18860 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18870 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18880 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18890 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
188a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
188b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
188c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
188d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
188e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
188f0 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70  oid sqlite3_disp
18900 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ose_module(IntPt
18910 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  r pModule);..#en
18920 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
18930 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
18940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
18990 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74  egion sqlite int
189a0 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28  erop api calls (
189b0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
189c0 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69  mework only)..#i
189d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
189e0 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21  CTFRAMEWORK && !
189f0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
18a00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18a10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18a20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18a30 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
18a40 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
18a50 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
18a60 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
18a70 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20  ong rowId);.... 
18a80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18a90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18aa0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18ab0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
18ac0 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f  te3_memory_used_
18ad0 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67  interop(ref long
18ae0 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
18af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18b00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18b10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18b20 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
18b30 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
18b40 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65  r_interop(int re
18b50 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e  setFlag, ref lon
18b60 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20  g bytes);....   
18b70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18b80 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18b90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18ba0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18bb0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
18bc0 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  d_double_interop
18bd0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
18be0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
18bf0 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
18c00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18c10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18c20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18c30 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18c40 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
18c50 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
18c60 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
18c70 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
18c80 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
18c90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18ca0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
18cb0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
18cc0 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ind_int64_intero
18cd0 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  p")]..    intern
18ce0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18cf0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18d00 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
18d10 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
18d20 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
18d30 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76  dex, ref ulong v
18d40 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
18d50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18d60 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
18d70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18d80 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
18d90 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
18da0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
18db0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
18dc0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
18dd0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18de0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18df0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18e00 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
18e10 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
18e20 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
18e30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
18e40 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
18e50 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
18e60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18e70 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18e80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18e90 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
18ea0 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  lue_double_inter
18eb0 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
18ec0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
18ed0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18ee0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18ef0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18f00 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
18f10 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
18f20 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
18f30 74 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20  tr p, ref Int64 
18f40 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
18f50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18f60 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18f70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18f80 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
18f90 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
18fa0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
18fb0 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65  text, ref double
18fc0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
18fd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18fe0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18ff0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19000 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
19010 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
19020 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
19030 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20  text, ref Int64 
19040 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
19050 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19060 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
19070 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19080 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
19090 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
190a0 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72  ble_module_inter
190b0 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  op(..        Int
190c0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
190d0 61 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64  ame, IntPtr pMod
190e0 75 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f  ule, int iVersio
190f0 6e 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61  n, xCreate xCrea
19100 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f  te,..        xCo
19110 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20  nnect xConnect, 
19120 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74  xBestIndex xBest
19130 49 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65  Index, xDisconne
19140 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d  ct xDisconnect,.
19150 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
19160 79 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65  y xDestroy, xOpe
19170 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20  n xOpen, xClose 
19180 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20  xClose, xFilter 
19190 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20  xFilter,..      
191a0 20 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78    xNext xNext, x
191b0 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d  Eof xEof, xColum
191c0 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49  n xColumn, xRowI
191d0 64 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74  d xRowId, xUpdat
191e0 65 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e xUpdate,..    
191f0 20 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69      xBegin xBegi
19200 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20  n, xSync xSync, 
19210 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c  xCommit xCommit,
19220 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
19230 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78  back,..        x
19240 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
19250 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e  ndFunction, xRen
19260 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61  ame xRename, xSa
19270 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
19280 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65  nt,..        xRe
19290 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20  lease xRelease, 
192a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c  xRollbackTo xRol
192b0 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20  lbackTo, IntPtr 
192c0 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20  pClientData,..  
192d0 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f        xDestroyMo
192e0 64 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64  dule xDestroyMod
192f0 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
19300 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43     // PLATFORM_C
19310 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
19320 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
19330 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  ARD..    #endreg
19340 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
19350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
193a0 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c  egion Native Del
193b0 65 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45  egates..#if INTE
193c0 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
193d0 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
193e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
193f0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19400 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19410 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19420 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19430 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
19440 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
19450 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28  rorCode xCreate(
19460 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
19470 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49   pDb,..        I
19480 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
19490 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
194a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
194b0 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
194c0 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
194d0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
194e0 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
194f0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
19550 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19560 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
19570 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
19580 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
19590 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
195a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
195b0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
195c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
195d0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
195e0 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
195f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
19600 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  x,..        int 
19610 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
19620 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
19630 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
19640 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
19650 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
19660 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
19670 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
196c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
196d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
196e0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
196f0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
19700 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19710 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
19720 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
19730 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
19740 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28  Code xBestIndex(
19750 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
19760 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
19770 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a   IntPtr pIndex..
19780 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
197e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
197f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19800 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
19810 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
19820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19830 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
19840 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
19850 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
19860 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  e xDisconnect(..
19870 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
19880 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
19890 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
198e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
198f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19900 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19910 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19920 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19930 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19940 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
19950 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
19960 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79  rorCode xDestroy
19970 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
19980 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
19990 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
199a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199e0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
199f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19a00 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
19a10 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
19a20 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
19a30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19a40 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
19a50 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
19a60 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e  eErrorCode xOpen
19a70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
19a80 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
19a90 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75    ref IntPtr pCu
19aa0 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
19ab0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19b00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19b10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19b20 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19b30 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19b40 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19b50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19b60 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
19b70 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
19b80 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d  rorCode xClose(.
19b90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19ba0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
19bb0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
19c10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19c20 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
19c30 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
19c40 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
19c50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19c60 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
19c70 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
19c80 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74  eErrorCode xFilt
19c90 65 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  er(..        Int
19ca0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
19cb0 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d        int idxNum
19cc0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
19cd0 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
19ce0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
19cf0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
19d00 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  v..    );....   
19d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19d60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19d70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19d80 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
19d90 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
19da0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19db0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
19dc0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
19dd0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
19de0 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20  Code xNext(..   
19df0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
19e00 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
19e10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19e60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19e70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19e80 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
19e90 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
19ea0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19eb0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
19ec0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
19ed0 6c 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28  legate int xEof(
19ee0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
19ef0 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
19f00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f50 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
19f60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19f70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
19f80 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
19f90 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
19fa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19fb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
19fc0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
19fd0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c  teErrorCode xCol
19fe0 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  umn(..        In
19ff0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
1a000 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1a010 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  ontext,..       
1a020 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
1a030 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1a090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a0a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1a0b0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1a0c0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1a0d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a0e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1a0f0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1a100 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
1a110 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49  owId(..        I
1a120 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
1a130 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
1a140 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a   rowId..    );..
1a150 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1a1b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a1c0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1a1d0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1a1e0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1a1f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a200 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1a210 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1a220 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74  ErrorCode xUpdat
1a230 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
1a240 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1a250 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
1a260 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
1a270 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
1a280 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
1a290 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1a2f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a300 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1a310 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1a320 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1a330 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a340 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1a350 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1a360 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
1a370 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  egin(..        I
1a380 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1a390 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1a3f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a400 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1a410 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1a420 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1a430 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a440 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1a450 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1a460 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1a470 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49  Sync(..        I
1a480 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1a490 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1a4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1a4f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a500 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1a510 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1a520 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1a530 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a540 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1a550 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1a560 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1a570 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
1a580 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
1a590 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1a5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1a5f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a600 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a610 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1a620 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1a630 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a640 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1a650 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1a660 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a670 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20   xRollback(..   
1a680 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1a690 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
1a6a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a6f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a700 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a710 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1a720 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1a730 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a740 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1a750 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1a760 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75  gate int xFindFu
1a770 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
1a780 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1a790 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67          int nArg
1a7a0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
1a7b0 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  r zName,..      
1a7c0 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c    ref SQLiteCall
1a7d0 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  back callback,..
1a7e0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
1a7f0 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20  tr pUserData..  
1a800 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a850 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a860 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a870 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a880 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a890 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a8a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a8b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a8c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a8d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a8e0 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
1a8f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1a900 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a910 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  zNew..    );....
1a920 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a970 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a990 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1a9a0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1a9b0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1a9c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1a9d0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1a9e0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1a9f0 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69  rorCode xSavepoi
1aa00 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nt(..        Int
1aa10 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1aa20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
1aa30 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
1aa40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1aa90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1aaa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1aab0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1aac0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1aad0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1aae0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1aaf0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1ab00 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1ab10 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d  rCode xRelease(.
1ab20 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1ab30 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1ab40 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
1ab50 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1abb0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1abc0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1abd0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1abe0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1abf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ac00 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1ac10 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1ac20 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1ac30 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  e xRollbackTo(..
1ac40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1ac50 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
1ac60 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1ac70 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1acd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ace0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1acf0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1ad00 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1ad10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ad20 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1ad30 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1ad40 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f   void xDestroyMo
1ad50 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69  dule(IntPtr pCli
1ad60 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69  entData);..#endi
1ad70 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
1ad80 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1add0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1ade0 69 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63  ion Native Struc
1adf0 74 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  tures..#if INTER
1ae00 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
1ae10 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1ae20 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1ae30 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1ae40 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1ae50 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d   sqlite3_module.
1ae60 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1ae70 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73  public int iVers
1ae80 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ion;..        pu
1ae90 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72  blic xCreate xCr
1aea0 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  eate;..        p
1aeb0 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78  ublic xConnect x
1aec0 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  Connect;..      
1aed0 20 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e    public xBestIn
1aee0 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d  dex xBestIndex;.
1aef0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1af00 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
1af10 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  connect;..      
1af20 20 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f    public xDestro
1af30 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20  y xDestroy;..   
1af40 20 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65       public xOpe
1af50 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20  n xOpen;..      
1af60 20 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20    public xClose 
1af70 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  xClose;..       
1af80 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20   public xFilter 
1af90 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20  xFilter;..      
1afa0 20 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78    public xNext x
1afb0 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  Next;..        p
1afc0 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b  ublic xEof xEof;
1afd0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1afe0 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e   xColumn xColumn
1aff0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1b000 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b  c xRowId xRowId;
1b010 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b020 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65   xUpdate xUpdate
1b030 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1b040 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b  c xBegin xBegin;
1b050 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b060 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20   xSync xSync;.. 
1b070 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
1b080 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a  ommit xCommit;..
1b090 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1b0a0 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
1b0b0 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ck;..        pub
1b0c0 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  lic xFindFunctio
1b0d0 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b  n xFindFunction;
1b0e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b0f0 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
1b100 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68  ;..        /* Th
1b110 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
1b120 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31  are in version 1
1b130 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
1b140 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
1b150 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73   * object.  Thos
1b160 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20  e below are for 
1b170 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72  version 2 and gr
1b180 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20  eater. */..     
1b190 20 20 20 70 75 62 6c 69 63 20 78 53 61 76 65 70     public xSavep
1b1a0 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b  oint xSavepoint;
1b1b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b1c0 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61   xRelease xRelea
1b1d0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  se;..        pub
1b1e0 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  lic xRollbackTo 
1b1f0 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20  xRollbackTo;..  
1b200 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
1b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b250 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
1b260 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1b270 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1b280 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1b290 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1b2a0 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20  _vtab..    {..  
1b2b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1b2c0 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20  Ptr pModule;..  
1b2d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1b2e0 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e   nRef; /* NO LON
1b2f0 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  GER USED */..   
1b300 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
1b310 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20  tr zErrMsg;..   
1b320 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1b380 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1b390 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1b3a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1b3b0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1b3c0 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20  vtab_cursor..   
1b3d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
1b3e0 69 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b  ic IntPtr pVTab;
1b3f0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b450 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
1b460 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
1b470 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
1b480 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
1b490 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
1b4a0 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20  raint..    {..  
1b4b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
1b4c0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
1b4d0 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  raint(..        
1b4e0 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
1b4f0 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
1b500 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  aint..          
1b510 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
1b520 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
1b530 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b540 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
1b550 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1b560 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b570 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d            iColum
1b580 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  n = constraint.i
1b590 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
1b5a0 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f           op = co
1b5b0 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20  nstraint.op;..  
1b5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73                us
1b5d0 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e  able = constrain
1b5e0 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20  t.usable;..     
1b5f0 20 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d             iTerm
1b600 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61  Offset = constra
1b610 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b  int.iTermOffset;
1b620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b630 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1b640 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b670 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
1b690 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b6a0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  int iColumn;..  
1b6b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
1b6c0 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
1b6d0 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20  ntOp op;..      
1b6e0 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73    public byte us
1b6f0 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  able;..        p
1b700 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f  ublic int iTermO
1b710 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ffset;..    }...
1b720 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b770 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1b780 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1b790 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1b7a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1b7b0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
1b7c0 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d  _orderby..    {.
1b7d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b7e0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
1b7f0 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20  derby(..        
1b800 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f      SQLiteIndexO
1b810 72 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a  rderBy orderBy..
1b820 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1b830 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
1b840 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
1b850 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b860 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29  orderBy != null)
1b870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1b880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b890 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72   iColumn = order
1b8a0 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  By.iColumn;..   
1b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
1b8c0 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63  c = orderBy.desc
1b8d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1b8e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1b8f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1b900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b910 2f 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 0d 0a  //////////////..
1b940 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b950 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a   int iColumn; /*
1b960 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a   Column number *
1b970 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1b980 63 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f  c byte desc;   /
1b990 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e  * True for DESC.
1b9a0 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e    False for ASC.
1b9b0 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
1b9c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ba10 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1ba20 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1ba30 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1ba40 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1ba50 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
1ba60 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a  nstraint_usage..
1ba70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
1ba80 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
1ba90 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
1baa0 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
1bab0 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
1bac0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f  nstraintUsage co
1bad0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20  nstraintUsage.. 
1bae0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1baf0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1bb00 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1bb10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
1bb20 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21  onstraintUsage !
1bb30 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1bb40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bb50 20 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65          argvInde
1bb60 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  x = constraintUs
1bb70 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a  age.argvIndex;..
1bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb90 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e  omit = constrain
1bba0 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20  tUsage.omit;..  
1bbb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1bbc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1bbd0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1bc20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1bc30 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66  argvIndex; /* if
1bc40 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20   >0, constraint 
1bc50 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20  is part of argv 
1bc60 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20  to xFilter */.. 
1bc70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
1bc80 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20  te omit;     /* 
1bc90 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65  Do not code a te
1bca0 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73  st for this cons
1bcb0 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d  traint */..    }
1bcc0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
1bd20 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
1bd30 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
1bd40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bd50 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
1bd60 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d  dex_info..    {.
1bd70 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75  .        /* Inpu
1bd80 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ts */..        p
1bd90 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74  ublic int nConst
1bda0 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72  raint; /* Number
1bdb0 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
1bdc0 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
1bdd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1bde0 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
1bdf0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1be00 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20  c int nOrderBy; 
1be10 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
1be20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65  entries in aOrde
1be30 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  rBy */..        
1be40 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f  public IntPtr aO
1be50 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20  rderBy;..       
1be60 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a   /* Outputs */..
1be70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
1be80 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
1be90 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20  tUsage;..       
1bea0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e   public int idxN
1beb0 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a  um;           /*
1bec0 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
1bed0 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64  identify the ind
1bee0 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ex */..        p
1bef0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78  ublic string idx
1bf00 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53  Str;        /* S
1bf10 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20  tring, possibly 
1bf20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71  obtained from sq
1bf30 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d  lite3_malloc */.
1bf40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1bf50 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64  int needToFreeId
1bf60 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64  xStr; /* Free id
1bf70 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74  xStr using sqlit
1bf80 65 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75  e3_free() if tru
1bf90 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  e */..        pu
1bfa0 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79  blic int orderBy
1bfb0 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72  Consumed;  /* Tr
1bfc0 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20  ue if output is 
1bfd0 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20  already ordered 
1bfe0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1bff0 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61  ic double estima
1c000 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69  tedCost; /* Esti
1c010 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73  mated cost of us
1c020 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a  ing this index *
1c030 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1c040 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64  c long estimated
1c050 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d  Rows;   /* Estim
1c060 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72  ated number of r
1c070 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d  ows returned */.
1c080 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c090 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73  SQLiteIndexFlags
1c0a0 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61   idxFlags; /* Ma
1c0b0 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44  sk of SQLITE_IND
1c0c0 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20  EX_SCAN_* flags 
1c0d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1c0e0 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b  ic long colUsed;
1c0f0 20 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75           /* Inpu
1c100 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d  t: Mask of colum
1c110 6e 73 20 75 73 65 64 20 62 79 20 73 74 61 74 65  ns used by state
1c120 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ment */..    }..
1c130 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
1c140 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23  region..  }..  #
1c150 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
1c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c1b0 20 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43    #region .NET C
1c1c0 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
1c1d0 20 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c   (only) Critical
1c1e0 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69  Handle Class..#i
1c1f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1c200 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69  CTFRAMEWORK..  i
1c210 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
1c220 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48   class CriticalH
1c230 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61  andle : IDisposa
1c240 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72  ble..  {..    pr
1c250 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c  ivate bool _isCl
1c260 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65  osed;..    prote
1c270 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64  cted IntPtr hand
1c280 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65  le;....    prote
1c290 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e  cted CriticalHan
1c2a0 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c  dle(IntPtr inval
1c2b0 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a  idHandleValue)..
1c2c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e      {..      han
1c2d0 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e  dle = invalidHan
1c2e0 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  dleValue;..     
1c2f0 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c   _isClosed = fal
1c300 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  se;..    }....  
1c310 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c    ~CriticalHandl
1c320 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
1c330 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
1c340 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1c350 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65  private void Cle
1c360 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  anup()..    {.. 
1c370 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73       if (!IsClos
1c380 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ed)..      {..  
1c390 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c        this._isCl
1c3a0 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
1c3b0 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76        if (!IsInv
1c3c0 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b  alid)..        {
1c3d0 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65  ..          Rele
1c3e0 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20  aseHandle();..  
1c3f0 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
1c400 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
1c410 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
1c420 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
1c430 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
1c440 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d   Close()..    {.
1c450 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
1c460 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
1c470 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
1c480 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b  Dispose()..    {
1c490 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
1c4a0 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
1c4b0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
1c4c0 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
1c4d0 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
1c4e0 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ng)..    {..    
1c4f0 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20    Cleanup();..  
1c500 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
1c510 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f  cted abstract bo
1c520 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1c530 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65  ();....    prote
1c540 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e  cted void SetHan
1c550 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65  dle(IntPtr value
1c560 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1c570 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d  handle = value;.
1c580 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
1c590 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e  blic void SetHan
1c5a0 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a  dleAsInvalid()..
1c5b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73      {..      _is
1c5c0 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  Closed = true;..
1c5d0 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
1c5e0 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
1c5f0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1c600 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f  ublic bool IsClo
1c610 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sed..    {..    
1c620 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f    get { return _
1c630 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20  isClosed; }..   
1c640 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
1c650 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49   abstract bool I
1c660 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d  sInvalid..    {.
1c670 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20  .      get;..   
1c680 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69   }....  }..#endi
1c690 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  f..  #endregion.
1c6a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1c700 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  n SQLiteConnecti
1c710 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  onHandle Class..
1c720 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74      // Handles t
1c730 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74  he unmanaged dat
1c740 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61  abase pointer, a
1c750 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61  nd provides fina
1c760 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  lization..    //
1c770 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e   support for it.
1c780 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c790 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
1c7a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1c7b0 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
1c7c0 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
1c7d0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
1c7e0 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  && !PLATFORM_COM
1c7f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c800 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1c810 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c  delegate void Cl
1c820 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c  oseConnectionCal
1c830 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
1c840 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
1c850 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20  tionHandle hdl, 
1c860 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
1c870 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1c880 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e  static CloseConn
1c890 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63  ectionCallback c
1c8a0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d  loseConnection =
1c8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1c8c0 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
1c8d0 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69  nnection;..#endi
1c8e0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1c8f0 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
1c940 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c950 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1c960 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
1c970 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
1c980 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
1c990 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1c9a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1c9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1c9f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
1ca00 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a  ool ownHandle;..
1ca10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1ca70 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
1ca80 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
1ca90 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  Ptr(SQLiteConnec
1caa0 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a  tionHandle db)..
1cab0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1cac0 20 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d         if (db !=
1cad0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1cae0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1caf0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cb00 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1cb10 20 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73        lock (db.s
1cb20 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1cb30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cb40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cb50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cb60 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  db.handle;..    
1cb70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1cb80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1cb90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1cba0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
1cbb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1cbc0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1cbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1cc10 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1cc20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1cc30 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62  Handle(IntPtr db
1cc40 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  , bool ownHandle
1cc50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1cc60 20 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29   this(ownHandle)
1cc70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1cc80 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1cc90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cca0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1ccb0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1ccc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1ccd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cce0 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d  this.ownHandle =
1ccf0 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20   ownHandle;..   
1cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1cd10 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20  Handle(db);..   
1cd20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1cd30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cd40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cd90 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
1cda0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1cdb0 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c  le(bool ownHandl
1cdc0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1cdd0 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
1cde0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
1cdf0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1ce00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1ce10 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20   (ownHandle)..  
1ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1ce30 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
1ce40 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
1ce50 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
1ce60 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
1ce70 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ce80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ceb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ced0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
1cee0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
1cef0 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
1cf00 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1cf10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cf20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1cf30 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1cf40 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1cf50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1cf60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1cf70 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75  !ownHandle) retu
1cf80 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
1cf90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1cfa0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1cfb0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1cfc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1cfd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1cfe0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1cff0 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
1d000 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
1d010 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
1d020 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
1d030 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
1d040 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ro);....#if SQLI
1d050 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
1d060 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d070 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
1d080 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0a0 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f    closeConnectio
1d0b0 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e  n(this, localHan
1d0c0 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  dle);..#else..  
1d0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1d0e0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1d0f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1d100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d110 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
1d120 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
1d130 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  is, localHandle)
1d140 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1d150 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1d160 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1d170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d180 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1d190 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1d1b0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
1d1c0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1d1d0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1f0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1d200 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1d210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d220 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f          "CloseCo
1d230 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20  nnection: {0}", 
1d240 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
1d250 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1d260 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d280 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1d290 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d2a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1d2b0 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
1d2c0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1d2d0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
1d2e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d300 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
1d310 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d330 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1d350 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
1d360 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68  nnection(this, h
1d370 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
1d380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d390 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
1d3a0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1d3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d3c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d3d0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
1d3e0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1d400 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1d410 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
1d420 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
1d430 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
1d440 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1d450 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1d460 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1d470 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1d480 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1d490 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1d4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1d4b0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
1d4c0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1d4d0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1d4e0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1d4f0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
1d500 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1d510 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1d520 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1d530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d540 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1d550 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d560 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1d570 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1d580 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1d590 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5b0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1d5c0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1d5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5e0 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
1d5f0 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78  nection: {0}, ex
1d600 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
1d610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d620 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
1d630 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1d640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d650 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d660 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1d670 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1d690 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1d6a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1d6b0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
1d6c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1d6d0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1d6e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d6f0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1d700 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1d710 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1d720 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d730 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1d740 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
1d750 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d760 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1d770 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
1d780 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d790 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
1d7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1d7b0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
1d7c0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
1d7d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1d7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d820 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
1d830 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
1d840 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
1d850 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
1d860 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d870 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
1d880 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
1d890 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e  f DebugData.conn
1d8a0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20  ectionCount);.. 
1d8b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1d8c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d910 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1d920 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61  ublic bool OwnHa
1d930 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
1d940 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1d950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1d960 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1d970 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d990 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1d9a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1d9b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9d0 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65  return ownHandle
1d9e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d9f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1da00 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1da10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1da70 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
1da80 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
1da90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1daa0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1dab0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1dac0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dad0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1dae0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1daf0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1db00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1db20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
1db30 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1db40 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1db50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1db60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1db70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1db80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
1dbd0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
1dbe0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
1dbf0 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
1dc00 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1dc10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1dc20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1dc30 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1dc40 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1dc50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1dc70 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
1dc80 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
1dc90 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1dca0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
1dcb0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1dcc0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1dcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1dd20 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  on SQLiteStateme
1dd30 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  ntHandle Class..
1dd40 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
1dd50 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
1dd60 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
1dd70 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d  ed SQLite statem
1dd80 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ents...    inter
1dd90 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
1dda0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1ddb0 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
1ddc0 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
1ddd0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1dde0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ddf0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1de00 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
1de10 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1de20 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
1de30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1de90 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
1dea0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1deb0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
1dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ded0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1def0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1df10 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1df20 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
1df30 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74   IntPtr(SQLiteSt
1df40 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74  atementHandle st
1df50 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  mt)..        {..
1df60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1df70 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  stmt != null).. 
1df80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1df90 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1dfa0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1dfc0 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74  k (stmt.syncRoot
1dfd0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1dfe0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e000 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61    return stmt.ha
1e010 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
1e020 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e030 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e040 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1e050 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
1e060 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1e070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1e0c0 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
1e0d0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1e0e0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
1e0f0 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
1e100 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  Ptr stmt)..     
1e110 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
1e120 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1e130 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e140 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1e150 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1e160 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1e170 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1e190 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1b0 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b  SetHandle(stmt);
1e1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1e1d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1e1e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e230 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1e240 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1e250 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
1e260 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
1e270 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1e280 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
1e290 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1e2a0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1e2b0 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
1e2c0 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e  bugData.statemen
1e2d0 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  tCount);..#endif
1e2e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e2f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e340 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
1e350 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
1e360 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1e370 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1e380 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1e390 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1e3a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e3b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1e3d0 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
1e3e0 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
1e3f0 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
1e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e410 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
1e420 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
1e430 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1e440 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
1e450 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1e460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e470 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
1e480 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
1e490 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
1e4a0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
1e4b0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1e4c0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1e4d0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e500 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1e510 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1e520 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1e530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e540 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1e550 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1e560 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1e580 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1e590 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
1e5a0 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
1e5b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1e5c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e5d0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e600 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
1e610 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1e620 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1e630 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1e640 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e650 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
1e660 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1e670 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1e680 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1e6b0 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
1e6c0 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  nt(cnn, handle);
1e6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e6e0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1e6f0 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
1e700 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1e710 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e720 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1e730 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
1e740 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1e750 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
1e760 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
1e770 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65   DebugData.state
1e780 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
1e790 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
1e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7b0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1e7c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1e7d0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
1e7e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1e7f0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1e800 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1e810 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
1e820 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1e830 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1e840 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
1e850 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1e860 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1e870 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1e880 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1e890 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e8c0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1e8d0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
1e8e0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1e8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e900 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1e910 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1e920 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1e940 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
1e950 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  t: {0}, exceptio
1e960 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
1e970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e980 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
1e990 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1e9a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1e9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1e9c0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1e9d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e9e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1e9f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1ea00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
1ea10 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
1ea20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1ea30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ea40 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1ea50 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1ea60 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ea80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ea90 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
1eaa0 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
1eab0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1ead0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1eae0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1eaf0 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
1eb00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1eb10 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1eb20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1eb30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1eb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1eb80 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1eb90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1eba0 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
1ebb0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1ebc0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ebd0 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
1ebe0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
1ebf0 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
1ec00 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
1ec10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
1ec20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ec70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
1ec80 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
1ec90 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
1eca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
1ecb0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
1ecc0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1ecd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ece0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ecf0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1ed00 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1ed10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1ed20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed30 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
1ed40 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1ed50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ed60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1ed70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1ed80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edd0 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
1ede0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
1edf0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
1ee00 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
1ee10 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1ee20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ee30 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1ee40 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1ee50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1ee60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ee70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ee80 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
1ee90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1eea0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
1eeb0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
1eec0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1eed0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1eee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ef20 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
1ef30 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
1ef40 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
1ef50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
1ef60 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
1ef70 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
1ef80 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73  e backup objects
1ef90 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
1efa0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
1efb0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
1efc0 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
1efd0 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
1efe0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1eff0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1f000 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
1f010 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
1f020 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1f030 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1f040 20 20 20 20 20 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 2f 2f 2f  ////////////////
1f060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f090 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1f0a0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1f0b0 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
1f0c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1f0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f110 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f120 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
1f130 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
1f140 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e  (SQLiteBackupHan
1f150 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  dle backup)..   
1f160 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f170 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21      if (backup !
1f180 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1f190 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1f1a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f1b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1f1c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63         lock (bac
1f1d0 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  kup.syncRoot)..#
1f1e0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1f1f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1f210 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64  turn backup.hand
1f220 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1f230 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1f240 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f250 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1f260 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
1f270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f2d0 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42  internal SQLiteB
1f2e0 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69  ackupHandle(SQLi
1f2f0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1f300 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62  le cnn, IntPtr b
1f310 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
1f320 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
1f330 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1f340 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f350 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1f360 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1f370 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1f380 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1f390 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1f3a0 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20  .cnn = cnn;..   
1f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1f3c0 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d  Handle(backup);.
1f3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1f3e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1f3f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1f400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f440 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1f450 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
1f460 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
1f470 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
1f480 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
1f490 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
1f4a0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1f4b0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
1f4c0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
1f4d0 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
1f4e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1f4f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1f500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f540 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1f550 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
1f560 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
1f570 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
1f580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f590 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1f5a0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
1f5b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f5c0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1f5d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
1f5e0 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
1f5f0 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
1f600 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1f610 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
1f620 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
1f630 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f640 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
1f650 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1f660 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1f670 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1f680 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
1f690 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
1f6a0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
1f6b0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1f6c0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1f6d0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1f6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f6f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f700 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1f710 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
1f720 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1f730 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1f740 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1f750 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1f760 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f780 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
1f790 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
1f7a0 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
1f7b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1f7c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f7d0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f800 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
1f810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f820 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1f830 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f840 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f850 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
1f860 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1f870 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1f880 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8a0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1f8b0 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
1f8c0 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8e0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1f8f0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1f900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f910 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1f920 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1f930 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1f940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f950 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1f960 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
1f970 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74  Data.backupCount
1f980 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1f990 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1f9a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1f9b0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1f9c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1f9d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1f9e0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1f9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1fa00 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1fa10 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1fa20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1fa30 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1fa40 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1fa50 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1fa60 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1fa70 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa90 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1faa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fab0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1fac0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
1fad0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
1fae0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1faf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb00 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1fb10 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb30 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63        "FinishBac
1fb40 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  kup: {0}, except
1fb50 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
1fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb70 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
1fb80 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1fb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1fba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fbb0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1fbc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fbd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1fbe0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1fbf0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1fc00 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
1fc10 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1fc20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fc30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1fc40 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1fc50 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1fc60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1fc80 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1fc90 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
1fca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1fcc0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1fcd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1fce0 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
1fcf0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1fd00 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
1fd10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1fd20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1fd70 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1fd80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1fd90 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
1fda0 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
1fdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1fdc0 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
1fdd0 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
1fde0 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f  bugData.backupCo
1fdf0 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
1fe00 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1fe10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fe20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1fe60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1fe70 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
1fe80 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
1fe90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1fea0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1feb0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1fec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fee0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1fef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1ff00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
1ff30 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
1ff40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ff50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ff60 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1ff70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffc0 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1ffd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1ffe0 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
1fff0 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
20000 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
20010 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20020 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
20030 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
20040 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20060 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
20070 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
20080 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
20090 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
200a0 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
200b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a     #endregion..}..