System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f9d738c1ac66cbce684a284487207a36846e90a5:


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 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17010 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17020 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17030 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17050 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17060 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17070 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17080 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
17090 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
170a0 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
170b0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
170c0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
170d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
170e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
170f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17100 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17110 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17130 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17140 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17150 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17160 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17170 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17180 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17190 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72  db_handle(IntPtr
171a0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
171b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
171c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
171d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
171e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
171f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17200 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17210 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17220 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17230 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17240 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17250 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17260 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17270 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d  te3_db_release_m
17280 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29  emory(IntPtr db)
17290 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
172a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
172b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
172c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
172d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
172e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
172f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17300 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17310 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17320 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17330 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17340 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17350 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
17360 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
17370 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
17380 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17390 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
173a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
173b0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
173c0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
173d0 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61  db_filename", Ca
173e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
173f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17400 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17410 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17420 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
17430 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17440 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
17450 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
17460 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17470 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17480 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
17490 6d 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  me_bytes(IntPtr 
174a0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
174b0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
174c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
174d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
174e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
174f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17500 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17510 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17520 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17530 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17540 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17550 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17560 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17570 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
17580 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
17590 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
175a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
175b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
175c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
175d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
175e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
175f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17600 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17620 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17630 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17640 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17650 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
17660 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
17670 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
17680 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
17690 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
176a0 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50  vParam, ref IntP
176b0 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
176c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
176d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
176e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
176f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17700 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17710 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17720 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17730 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17740 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17750 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17760 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17770 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65  int sqlite3_rele
17780 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e  ase_memory(int n
17790 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
177a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
177b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
177c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
177d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
177e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
177f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17800 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17820 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17830 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17840 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
17850 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
17860 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
17870 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17880 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17890 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
178a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
178b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
178c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
178d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
178e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
178f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17900 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17910 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17920 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17930 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
17940 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
17950 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  odes(IntPtr db, 
17960 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23  int onoff);....#
17970 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17980 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17990 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
179a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
179b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
179c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
179d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
179e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
179f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17a00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17a10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17a20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17a30 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
17a40 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
17a50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17a60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17a70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17a80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17a90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17aa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17ab0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17ac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17ad0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17ae0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17af0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17b00 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17b10 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
17b20 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
17b30 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
17b40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17b50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17b60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17b70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17b80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17b90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17ba0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17bb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17bc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
17bd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17be0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
17bf0 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53  sqlite3_errstr(S
17c00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
17c10 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a  c); /* 3.7.15+ *
17c20 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  /....    // Sinc
17c30 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20  e sqlite3_log() 
17c40 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
17c50 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
17c60 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
17c70 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
17c80 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
17c90 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e   possible calls.
17ca0 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72    For now, we ar
17cb0 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20  e only exposing 
17cc0 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c  a single string,
17cd0 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70   and..    // dep
17ce0 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
17cf0 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
17d00 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
17d10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17d20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
17d30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17d40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
17d50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17d60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17d70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17d80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17d90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
17da0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17db0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
17dc0 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74  qlite3_log(SQLit
17dd0 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
17de0 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72  ode, byte[] zFor
17df0 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  mat);....#if !PL
17e00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17e10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
17e20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17e30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
17e40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17e50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17e60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17e70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17e80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
17e90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17ea0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
17eb0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
17ec0 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
17ed0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
17ee0 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
17ef0 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
17f00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17f10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17f20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17f30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17f40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17f50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17f60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17f70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17f80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17f90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17fa0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17fb0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17fc0 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49  e3_backup_init(I
17fd0 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79  ntPtr destDb, by
17fe0 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20  te[] zDestName, 
17ff0 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c  IntPtr sourceDb,
18000 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e   byte[] zSourceN
18010 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
18020 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18030 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18050 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18060 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18070 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18080 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
180a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
180b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
180c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
180d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
180e0 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e  3_backup_step(In
180f0 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74  tPtr backup, int
18100 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20   nPage);....#if 
18110 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18120 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18130 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18140 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18150 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18160 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18170 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18180 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18190 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
181a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
181b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
181c0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
181d0 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72  remaining(IntPtr
181e0 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
181f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18200 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18210 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18220 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18230 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18240 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18250 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18270 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18280 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18290 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
182a0 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
182b0 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74  _pagecount(IntPt
182c0 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
182d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
182e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
182f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18300 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18310 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18320 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18330 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18340 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18350 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18360 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18370 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18380 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18390 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
183a0 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tab(IntPtr db, I
183b0 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a  ntPtr zSQL);....
183c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
183d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
183e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
183f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18400 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18410 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18420 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18430 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18440 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18450 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18460 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18470 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18480 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66  mprintf(IntPtr f
18490 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74  ormat, __arglist
184a0 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  );..    #endregi
184b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c  on....    // SQL
184c0 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68  ite API calls th
184d0 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  at are provided 
184e0 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20  by "well-known" 
184f0 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20  extensions that 
18500 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c  may be staticall
18510 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64  y..    // linked
18520 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
18530 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62   core native lib
18540 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69  rary currently i
18550 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67  n use...    #reg
18560 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71  ion extension sq
18570 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
18580 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
18590 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
185a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
185b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
185c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
185d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
185e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
185f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18600 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18610 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18620 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18630 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18640 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18650 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
18660 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
18670 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
18680 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
18690 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
186a0 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
186b0 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
186c0 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
186d0 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
186e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
186f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18700 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18710 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18760 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18770 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18780 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
18790 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
187a0 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64  dule(IntPtr pMod
187b0 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
187c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
187d0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
18830 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  sqlite interop a
18840 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43  pi calls (.NET C
18850 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
18860 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54   only)..#if PLAT
18870 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18880 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
18890 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b  _STANDARD..    [
188a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
188b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
188c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
188d0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
188e0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
188f0 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
18900 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f   db, ref long ro
18910 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wId);....    [Dl
18920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18930 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18950 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
18960 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f  mory_used_intero
18970 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  p(ref long bytes
18980 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18990 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
189a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
189b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
189c0 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  id sqlite3_memor
189d0 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65  y_highwater_inte
189e0 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61  rop(int resetFla
189f0 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  g, ref long byte
18a00 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
18a10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18a20 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
18a30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18a40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18a50 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
18a60 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
18a70 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
18a80 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
18a90 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
18aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ab0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18ac0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18ad0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18ae0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
18af0 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
18b00 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18b10 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
18b20 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
18b30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18b40 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
18b50 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
18b60 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a  t64_interop")]..
18b70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18b80 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18b90 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18ba0 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69  e3_bind_uint64_i
18bb0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
18bc0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
18bd0 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ef ulong value);
18be0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
18bf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18c00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18c10 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
18c20 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
18c30 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
18c40 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
18c50 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
18c60 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
18c70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18c80 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18c90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18ca0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
18cb0 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69  3_column_int64_i
18cc0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
18cd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
18ce0 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
18cf0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18d00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18d10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18d20 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
18d30 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
18d40 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
18d50 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c  Ptr p, ref doubl
18d60 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
18d70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18d80 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18d90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18da0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
18db0 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e  3_value_int64_in
18dc0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
18dd0 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
18de0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18df0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18e00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18e10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
18e20 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
18e30 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
18e40 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
18e50 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
18e60 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
18e70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18e80 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
18e90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
18ea0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
18eb0 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
18ec0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
18ed0 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
18ee0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18ef0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18f00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18f10 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18f20 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
18f30 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
18f40 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20  dule_interop(.. 
18f50 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
18f60 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49  , IntPtr name, I
18f70 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69  ntPtr pModule, i
18f80 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72  nt iVersion, xCr
18f90 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20  eate xCreate,.. 
18fa0 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20         xConnect 
18fb0 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49  xConnect, xBestI
18fc0 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c  ndex xBestIndex,
18fd0 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
18fe0 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20  sconnect,..     
18ff0 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73     xDestroy xDes
19000 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65  troy, xOpen xOpe
19010 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  n, xClose xClose
19020 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  , xFilter xFilte
19030 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78  r,..        xNex
19040 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45  t xNext, xEof xE
19050 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  of, xColumn xCol
19060 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77  umn, xRowId xRow
19070 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64  Id, xUpdate xUpd
19080 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42  ate,..        xB
19090 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79  egin xBegin, xSy
190a0 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69  nc xSync, xCommi
190b0 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c  t xCommit, xRoll
190c0 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d  back xRollback,.
190d0 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75  .        xFindFu
190e0 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
190f0 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52  tion, xRename xR
19100 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e  ename, xSavepoin
19110 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20  t xSavepoint,.. 
19120 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20         xRelease 
19130 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62  xRelease, xRollb
19140 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
19150 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  o, IntPtr pClien
19160 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  tData,..        
19170 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
19180 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  DestroyModule);.
19190 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
191a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
191b0 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
191c0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
191d0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
191e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
19240 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73  Native Delegates
19250 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
19260 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
19270 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19280 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19290 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
192a0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
192b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
192c0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
192d0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
192e0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
192f0 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
19300 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
19310 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19320 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
19330 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
19340 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
19350 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
19360 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
19370 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
19380 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
19390 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
193e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
193f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19400 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19410 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19420 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19430 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19440 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
19450 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
19460 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
19470 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
19480 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
19490 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
194a0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
194b0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
194c0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
194d0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
194e0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
194f0 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
19500 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19550 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
19560 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19570 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
19580 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
19590 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
195a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
195b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
195c0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
195d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
195e0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
195f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
19600 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
19610 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b  r pIndex..    );
19620 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19670 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
19680 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19690 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
196a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
196b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
196c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
196d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
196e0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
196f0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
19700 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
19710 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
19720 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
19780 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19790 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
197a0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
197b0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
197c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
197d0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
197e0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
197f0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
19800 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
19810 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
19820 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
19830 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
198a0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
198b0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
198c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
198d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
198e0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
198f0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
19900 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
19910 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
19920 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
19930 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
19940 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19990 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
199a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
199b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
199c0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
199d0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
199e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
199f0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
19a00 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
19a10 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
19a20 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
19a30 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
19a40 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
19a50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19aa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19ab0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
19ac0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
19ad0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
19ae0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19af0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
19b00 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
19b10 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
19b20 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
19b30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
19b40 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
19b50 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
19b60 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
19b70 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  tr,..        int
19b80 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
19b90 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
19ba0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
19bb0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
19c00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19c10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
19c20 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
19c30 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
19c40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19c50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
19c60 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
19c70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
19c80 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49  Next(..        I
19c90 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
19ca0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cf0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
19d00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19d10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19d20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
19d30 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
19d40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19d50 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
19d60 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
19d70 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
19d80 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
19d90 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
19da0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19df0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19e00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19e10 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
19e20 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
19e30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19e40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
19e50 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
19e60 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
19e70 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
19e80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
19e90 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
19ea0 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
19eb0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
19ec0 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
19ed0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19f20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19f30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19f40 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19f50 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19f60 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19f70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19f80 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
19f90 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
19fa0 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
19fb0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19fc0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
19fd0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
19fe0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
19ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a040 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a050 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a060 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a070 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a080 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a090 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a0a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a0b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1a0c0 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
1a0d0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1a0e0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
1a0f0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
1a100 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1a110 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
1a120 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
1a130 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a150 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
1a180 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a190 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a1a0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1a1b0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1a1c0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1a1d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1a1e0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1a1f0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1a200 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
1a210 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a220 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1a230 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a280 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a290 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a2a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1a2b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1a2c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1a2d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1a2e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1a2f0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1a300 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
1a310 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a320 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1a330 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a380 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a390 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a3a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1a3b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1a3c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1a3d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1a3e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1a3f0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1a400 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
1a410 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1a420 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
1a430 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1a490 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a4a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1a4b0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1a4c0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1a4d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a4e0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1a4f0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1a500 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
1a510 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49  back(..        I
1a520 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1a530 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a580 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1a590 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a5a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1a5b0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1a5c0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1a5d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a5e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1a5f0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
1a600 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
1a610 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1a620 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1a630 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
1a640 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
1a650 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
1a660 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
1a670 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
1a680 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73    ref IntPtr pUs
1a690 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a  erData..    );..
1a6a0 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1a6f0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1a700 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a710 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1a720 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1a730 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1a740 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a750 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1a760 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1a770 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
1a780 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
1a790 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1a7a0 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
1a7b0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1a7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1a810 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1a820 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a830 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1a840 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1a850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a860 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1a870 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1a880 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1a890 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
1a8a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1a8b0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1a8c0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
1a8d0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a930 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a940 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a950 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a960 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a970 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a980 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a990 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a9a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a9b0 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
1a9c0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1a9d0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
1a9e0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
1a9f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa40 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1aa50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aa60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1aa70 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1aa80 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1aa90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1aaa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1aab0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1aac0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
1aad0 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
1aae0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1aaf0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
1ab00 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
1ab10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab60 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1ab70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ab80 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1ab90 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1aba0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1abb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1abc0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1abd0 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  c delegate void 
1abe0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49  xDestroyModule(I
1abf0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
1ac00 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  a);..#endif..   
1ac10 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1ac20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ac70 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
1ac80 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d  tive Structures.
1ac90 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
1aca0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
1acb0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
1acc0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
1acd0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
1ace0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
1acf0 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  e3_module..    {
1ad00 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1ad10 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a   int iVersion;..
1ad20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1ad30 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d  Create xCreate;.
1ad40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1ad50 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
1ad60 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
1ad70 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  ic xBestIndex xB
1ad80 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  estIndex;..     
1ad90 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f     public xDisco
1ada0 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
1adb0 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
1adc0 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
1add0 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70  troy;..        p
1ade0 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65  ublic xOpen xOpe
1adf0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
1ae00 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  ic xClose xClose
1ae10 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1ae20 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  c xFilter xFilte
1ae30 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  r;..        publ
1ae40 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d  ic xNext xNext;.
1ae50 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1ae60 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20  xEof xEof;..    
1ae70 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75      public xColu
1ae80 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  mn xColumn;..   
1ae90 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77       public xRow
1aea0 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20  Id xRowId;..    
1aeb0 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64 61      public xUpda
1aec0 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
1aed0 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 67       public xBeg
1aee0 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20  in xBegin;..    
1aef0 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63      public xSync
1af00 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20   xSync;..       
1af10 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20   public xCommit 
1af20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20  xCommit;..      
1af30 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61    public xRollba
1af40 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20  ck xRollback;.. 
1af50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
1af60 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
1af70 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20  dFunction;..    
1af80 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61      public xRena
1af90 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20  me xRename;..   
1afa0 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68       /* The meth
1afb0 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e  ods above are in
1afc0 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68   version 1 of th
1afd0 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
1afe0 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a  ..         * obj
1aff0 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f  ect.  Those belo
1b000 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f  w are for versio
1b010 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e  n 2 and greater.
1b020 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1b030 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78  lic xSavepoint x
1b040 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20  Savepoint;..    
1b050 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65      public xRele
1b060 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
1b070 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
1b080 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
1b090 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ackTo;..    }...
1b0a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0f0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1b100 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1b110 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1b120 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1b130 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d  ct sqlite3_vtab.
1b140 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1b150 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d  public IntPtr pM
1b160 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
1b170 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b  public int nRef;
1b180 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53   /* NO LONGER US
1b190 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ED */..        p
1b1a0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72  ublic IntPtr zEr
1b1b0 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rMsg;..    }....
1b1c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b210 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
1b220 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
1b230 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
1b240 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
1b250 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  t sqlite3_vtab_c
1b260 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20  ursor..    {..  
1b270 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1b280 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20  Ptr pVTab;..    
1b290 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
1b2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
1b2f0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
1b300 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
1b310 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b320 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
1b330 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d  ndex_constraint.
1b340 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1b350 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
1b360 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28  ndex_constraint(
1b370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1b380 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
1b390 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  int constraint..
1b3a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1b3b0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
1b3c0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b3e0 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75  constraint != nu
1b3f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b400 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b410 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f      iColumn = co
1b420 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e  nstraint.iColumn
1b430 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b440 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69     op = constrai
1b450 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  nt.op;..        
1b460 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d          usable =
1b470 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62   constraint.usab
1b480 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1b490 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74       iTermOffset
1b4a0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54   = constraint.iT
1b4b0 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
1b4c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1b4d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b520 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b530 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
1b540 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
1b550 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
1b560 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f  exConstraintOp o
1b570 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  p;..        publ
1b580 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d  ic byte usable;.
1b590 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b5a0 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b  int iTermOffset;
1b5b0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b610 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
1b620 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
1b630 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
1b640 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
1b650 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
1b660 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  by..    {..     
1b670 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
1b680 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28  3_index_orderby(
1b690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1b6a0 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
1b6b0 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20   orderBy..      
1b6c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1b6d0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
1b6e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b6f0 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42        if (orderB
1b700 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
1b710 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b720 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75             iColu
1b730 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f  mn = orderBy.iCo
1b740 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
1b750 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72         desc = or
1b760 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20  derBy.desc;..   
1b770 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b790 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b7e0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
1b7f0 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d  Column; /* Colum
1b800 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20  n number */..   
1b810 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
1b820 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65   desc;   /* True
1b830 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
1b840 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20  e for ASC. */.. 
1b850 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
1b8b0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
1b8c0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
1b8d0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
1b8e0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
1b8f0 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
1b900 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d  nt_usage..    {.
1b910 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b920 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
1b930 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d  nstraint_usage(.
1b940 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1b950 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
1b960 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69  ntUsage constrai
1b970 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20  ntUsage..       
1b980 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1b990 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
1b9a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b9b0 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
1b9c0 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c  intUsage != null
1b9d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1b9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b9f0 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f    argvIndex = co
1ba00 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72  nstraintUsage.ar
1ba10 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  gvIndex;..      
1ba20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d            omit =
1ba30 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
1ba40 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  .omit;..        
1ba50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1ba60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1bac0 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e  ublic int argvIn
1bad0 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63  dex; /* if >0, c
1bae0 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
1baf0 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
1bb00 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lter */..       
1bb10 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69   public byte omi
1bb20 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74  t;     /* Do not
1bb30 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
1bb40 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
1bb50 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
1bb60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1bb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bbb0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1bbc0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1bbd0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1bbe0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1bbf0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
1bc00 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  fo..    {..     
1bc10 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d     /* Inputs */.
1bc20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1bc30 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  int nConstraint;
1bc40 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
1bc50 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72  tries in aConstr
1bc60 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
1bc70 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
1bc80 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20  Constraint;..   
1bc90 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1bca0 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20  nOrderBy;    /* 
1bcb0 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
1bcc0 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f  s in aOrderBy */
1bcd0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1bce0 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79   IntPtr aOrderBy
1bcf0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75  ;..        /* Ou
1bd00 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  tputs */..      
1bd10 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1bd20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  aConstraintUsage
1bd30 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1bd40 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20  c int idxNum;   
1bd50 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65          /* Numbe
1bd60 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69  r used to identi
1bd70 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d  fy the index */.
1bd80 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1bd90 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20  string idxStr;  
1bda0 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c        /* String,
1bdb0 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e   possibly obtain
1bdc0 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
1bdd0 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20  malloc */..     
1bde0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65     public int ne
1bdf0 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20  edToFreeIdxStr; 
1be00 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20 75  /* Free idxStr u
1be10 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65  sing sqlite3_fre
1be20 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a  e() if true */..
1be30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1be40 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  nt orderByConsum
1be50 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20  ed;  /* True if 
1be60 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64  output is alread
1be70 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20  y ordered */..  
1be80 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75        public dou
1be90 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  ble estimatedCos
1bea0 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20  t; /* Estimated 
1beb0 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68  cost of using th
1bec0 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  is index */..   
1bed0 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67       public long
1bee0 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20   estimatedRows; 
1bef0 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e    /* Estimated n
1bf00 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65  umber of rows re
1bf10 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20  turned */..     
1bf20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
1bf30 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c  IndexFlags idxFl
1bf40 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20  ags; /* Mask of 
1bf50 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41  SQLITE_INDEX_SCA
1bf60 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20  N_* flags */..  
1bf70 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e        public lon
1bf80 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20  g colUsed;      
1bf90 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73     /* Input: Mas
1bfa0 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65  k of columns use
1bfb0 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a  d by statement *
1bfc0 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  /..    }..#endif
1bfd0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1bfe0 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
1bff0 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
1c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c040 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
1c050 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  ion .NET Compact
1c060 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79   Framework (only
1c070 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  ) CriticalHandle
1c080 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54   Class..#if PLAT
1c090 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c0a0 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
1c0b0 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
1c0c0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
1c0d0 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
1c0e0 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
1c0f0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
1c100 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
1c110 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
1c120 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
1c130 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
1c140 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
1c150 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
1c160 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
1c170 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
1c180 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
1c190 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
1c1a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
1c1b0 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
1c1c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
1c1d0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
1c1e0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
1c1f0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
1c200 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
1c210 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
1c220 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c230 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
1c240 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
1c250 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
1c260 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1c270 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
1c280 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
1c290 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
1c2a0 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
1c2b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1c2c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1c2d0 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
1c2e0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
1c2f0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
1c300 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
1c310 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
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 74 72 75 65 29 3b    Dispose(true);
1c340 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1c350 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
1c360 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
1c370 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
1c380 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
1c390 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
1c3a0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
1c3b0 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
1c3c0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
1c3d0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
1c3e0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
1c3f0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
1c400 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
1c410 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
1c420 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
1c430 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
1c440 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
1c450 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
1c460 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
1c470 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
1c480 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
1c490 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
1c4a0 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
1c4b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
1c4c0 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
1c4d0 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
1c4e0 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
1c4f0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
1c500 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
1c510 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
1c520 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
1c530 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1c540 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c590 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
1c5a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1c5b0 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
1c5c0 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d   Handles the unm
1c5d0 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20  anaged database 
1c5e0 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f  pointer, and pro
1c5f0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
1c600 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f  on..    // suppo
1c610 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20  rt for it...    
1c620 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
1c630 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e  class SQLiteConn
1c640 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43  ectionHandle : C
1c650 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
1c660 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45     {..#if SQLITE
1c670 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c  _STANDARD && !PL
1c680 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c690 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1c6a0 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
1c6b0 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e  te void CloseCon
1c6c0 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28  nectionCallback(
1c6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1c6e0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1c6f0 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72  ndle hdl, IntPtr
1c700 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   db);....       
1c710 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c720 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
1c730 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f  Callback closeCo
1c740 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20  nnection =..    
1c750 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1c760 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
1c770 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
1c780 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c7d0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1c7e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c7f0 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
1c800 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
1c810 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
1c820 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
1c830 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c880 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c890 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77   private bool ow
1c8a0 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20  nHandle;....    
1c8b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1c900 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1c910 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
1c920 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
1c930 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
1c940 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20  ndle db)..      
1c950 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c960 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29   if (db != null)
1c970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1c980 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1c990 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9b0 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f  lock (db.syncRoo
1c9c0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1c9d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9f0 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e     return db.han
1ca00 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
1ca10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ca20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ca30 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1ca40 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
1ca50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1ca60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1cab0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
1cac0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1cad0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c  (IntPtr db, bool
1cae0 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20   ownHandle)..   
1caf0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1cb00 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
1cb10 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1cb20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cb30 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1cb40 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1cb50 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1cb60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cb70 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
1cb80 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61  wnHandle = ownHa
1cb90 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
1cba0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1cbb0 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  (db);..         
1cbc0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1cbd0 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
1cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1cc30 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
1cc40 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f  ectionHandle(boo
1cc50 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
1cc60 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
1cc70 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
1cc80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
1cc90 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1cca0 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48          if (ownH
1ccb0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
1ccc0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
1ccd0 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
1cce0 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e  f DebugData.conn
1ccf0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
1cd00 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
1cd10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd40 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1cd70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
1cd80 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
1cd90 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
1cda0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1cdb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cdc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1cdd0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1cde0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1cdf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ce00 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61        if (!ownHa
1ce10 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75  ndle) return tru
1ce20 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1ce30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1ce40 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1ce50 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
1ce60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ce70 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1ce80 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
1ce90 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
1cea0 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
1ceb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cec0 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
1ced0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
1cee0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
1cef0 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
1cf00 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
1cf10 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
1cf20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1cf30 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
1cf40 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
1cf50 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
1cf60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1cf70 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
1cf80 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
1cf90 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1cfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1cfb0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
1cfc0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
1cfd0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e  calHandle);..#en
1cfe0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  dif....#if !NET_
1cff0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1d000 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1d010 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1d020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d030 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d040 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1d050 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
1d060 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1d070 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1d080 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
1d090 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1d0a0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1d0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0c0 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
1d0d0 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  on: {0}", localH
1d0e0 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
1d0f0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
1d100 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1d110 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
1d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1d140 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
1d150 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1d160 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1d170 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1d180 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d190 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d1a0 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
1d1b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1d1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1d1f0 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
1d200 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29  on(this, handle)
1d210 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d220 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1d230 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
1d240 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1d250 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d260 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1d270 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
1d280 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1d290 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
1d2a0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
1d2b0 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e  f DebugData.conn
1d2c0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
1d2d0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
1d2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d2f0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1d300 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1d310 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
1d320 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
1d330 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
1d340 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1d350 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
1d360 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
1d370 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1d380 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
1d390 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1d3a0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
1d3b0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1d3c0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1d3d0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1d400 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1d410 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
1d420 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
1d430 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1d440 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
1d450 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
1d460 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
1d470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d480 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f   "CloseConnectio
1d490 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  n: {0}, exceptio
1d4a0 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4c0 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
1d4d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1d4e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d500 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1d510 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d520 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1d530 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1d540 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
1d550 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
1d560 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1d570 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d580 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1d590 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1d5a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1d5c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d5d0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
1d5e0 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1d600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1d610 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1d620 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1d630 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
1d640 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1d650 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1d660 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d670 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1d6c0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1d6d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1d6e0 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
1d6f0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1d700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d710 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
1d720 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
1d730 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e  gData.connection
1d740 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
1d750 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
1d760 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1d7b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1d7c0 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a  bool OwnHandle..
1d7d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d7e0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1d7f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1d800 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d810 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1d820 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1d830 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1d840 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1d850 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d860 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1d870 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20   ownHandle;..   
1d880 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1d890 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d8a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1d8b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1d8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
1d900 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1d910 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
1d920 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
1d930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1d940 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1d950 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1d960 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d980 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1d990 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1d9a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9c0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
1d9d0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
1d9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d9f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1da00 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1da10 0a 20 20 20 20 20 20 20 20 2f 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 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1da70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1da80 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
1da90 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
1daa0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1dab0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dac0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1dad0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1dae0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1daf0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1db00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
1db10 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
1db20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1db30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
1db40 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
1db50 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1db60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1db70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
1dbb0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
1dbc0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
1dbd0 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
1dbe0 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   Provides finali
1dbf0 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66  zation support f
1dc00 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c  or unmanaged SQL
1dc10 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d  ite statements..
1dc20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
1dc30 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
1dc40 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1dc50 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
1dc60 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
1dc70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1dc80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1dc90 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
1dca0 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
1dcb0 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
1dcc0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
1dcd0 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1dd20 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1dd30 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1dd40 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
1dd50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1dd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1dda0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1ddb0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
1ddc0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
1ddd0 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  r(SQLiteStatemen
1dde0 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20  tHandle stmt).. 
1ddf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1de00 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21        if (stmt !
1de10 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1de20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1de30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1de40 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1de50 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d         lock (stm
1de60 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  t.syncRoot)..#en
1de70 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1de80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1de90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1dea0 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d  rn stmt.handle;.
1deb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dec0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ded0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
1dee0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1def0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
1df00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
1df60 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65  rnal SQLiteState
1df70 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74  mentHandle(SQLit
1df80 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1df90 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74  e cnn, IntPtr st
1dfa0 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mt)..           
1dfb0 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
1dfc0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1dfd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dfe0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1dff0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1e000 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1e010 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e020 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e           this.cn
1e030 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20  n = cnn;..      
1e040 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1e050 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20  dle(stmt);..    
1e060 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e070 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1e0d0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1e0e0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1e0f0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
1e100 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
1e110 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
1e120 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1e130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1e140 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
1e150 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
1e160 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
1e170 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1e180 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e190 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e1d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e1e0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1e1f0 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1e200 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1e210 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e220 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1e230 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
1e240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1e260 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
1e270 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
1e280 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
1e290 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1e2a0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
1e2b0 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
1e2c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e2d0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
1e2e0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1e2f0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1e300 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1e310 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61  Base.FinalizeSta
1e320 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61  tement(cnn, loca
1e330 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
1e340 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1e350 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1e360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e370 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1e380 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1e3a0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
1e3b0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1e3c0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3e0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1e3f0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e410 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
1e420 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22  eStatement: {0}"
1e430 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
1e440 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1e460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e470 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1e480 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e490 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1e4a0 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
1e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1e4c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
1e4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e4f0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
1e500 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1e510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e520 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e540 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
1e550 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
1e560 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e580 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
1e590 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1e5c0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1e5d0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1e5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e5f0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1e600 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
1e610 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f  Data.statementCo
1e620 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
1e630 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1e640 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e650 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
1e660 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1e670 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1e680 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1e690 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1e6a0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
1e6b0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
1e6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1e6d0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
1e6e0 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
1e6f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1e700 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1e710 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1e720 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1e730 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1e740 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1e760 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
1e770 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
1e780 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1e790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7a0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1e7b0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1e7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e7d0 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
1e7e0 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
1e7f0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
1e800 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1e810 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
1e820 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
1e830 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
1e840 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e850 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
1e860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e870 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1e880 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1e890 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e8a0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1e8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1e8c0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1e8d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8f0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1e900 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1e910 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e930 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
1e940 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
1e950 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e960 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
1e970 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1e980 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
1e990 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1e9a0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
1e9b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1e9c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea10 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
1ea20 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1ea30 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
1ea40 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
1ea50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ea60 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
1ea70 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
1ea80 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
1ea90 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
1eaa0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
1eab0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
1eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1eb10 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
1eb20 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
1eb30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1eb40 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
1eb50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1eb60 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1eb70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1eb80 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1eb90 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1eba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1ebb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ebc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ebd0 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
1ebe0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
1ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ec00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ec10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ec20 20 20 20 20 2f 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 0d 0a 0d 0a 23  ///////////....#
1ec70 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
1ec80 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
1ec90 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
1eca0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
1ecb0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1ecc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ecd0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1ece0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1ecf0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1ed00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ed10 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
1ed20 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
1ed30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ed40 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1ed50 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1ed60 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1ed70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
1edc0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61  #region SQLiteBa
1edd0 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73  ckupHandle Class
1ede0 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65  ..    // Provide
1edf0 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73  s finalization s
1ee00 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e  upport for unman
1ee10 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b  aged SQLite back
1ee20 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20  up objects...   
1ee30 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
1ee40 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63   class SQLiteBac
1ee50 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  kupHandle : Crit
1ee60 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
1ee70 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1ee80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ee90 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
1eea0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
1eeb0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
1eec0 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
1eed0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
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 2f 2f  ////////////////
1ef20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1ef30 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
1ef40 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1ef50 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
1ef60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ef70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1efb0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1efc0 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
1efd0 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
1efe0 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61  eBackupHandle ba
1eff0 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b  ckup)..        {
1f000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1f010 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c   (backup != null
1f020 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1f030 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1f040 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f060 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79   lock (backup.sy
1f070 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1f080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f090 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f0a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62          return b
1f0b0 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20  ackup.handle;.. 
1f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f0d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1f0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1f0f0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1f100 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1f110 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1f120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f160 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
1f170 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  al SQLiteBackupH
1f180 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
1f190 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1f1a0 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  , IntPtr backup)
1f1b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1f1c0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
1f1d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1f1e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1f200 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1f210 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1f220 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f230 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
1f240 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
1f250 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1f260 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20  (backup);..     
1f270 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f280 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f2e0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
1f2f0 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a  BackupHandle()..
1f300 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
1f310 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
1f320 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1f330 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1f340 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1f350 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
1f360 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
1f370 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  ckupCount);..#en
1f380 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1f390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1f3f0 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1f400 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1f410 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1f420 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1f430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1f440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f470 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1f480 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1f490 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4b0 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1f4c0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
1f4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1f4e0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1f4f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1f500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f510 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
1f520 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
1f530 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
1f540 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1f550 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1f560 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1f570 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1f580 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5a0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1f5b0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
1f5c0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
1f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5e0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1f5f0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1f600 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1f610 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
1f620 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c  ishBackup: {0}",
1f630 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
1f640 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f670 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1f680 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f690 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1f6a0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
1f6b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1f6c0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
1f6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6f0 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
1f700 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1f710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f720 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1f740 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
1f750 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64  Backup(cnn, hand
1f760 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1f780 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
1f790 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1f7a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1f7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1f7c0 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
1f7d0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
1f7e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1f7f0 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
1f800 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
1f810 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
1f820 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
1f830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f840 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
1f850 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1f860 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
1f870 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1f880 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1f890 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
1f8a0 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
1f8b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1f8c0 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
1f8d0 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
1f8e0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1f8f0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
1f900 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1f910 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1f920 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1f930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1f940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f950 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
1f960 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
1f970 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1f980 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1f990 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1f9a0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1f9b0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9d0 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
1f9e0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
1f9f0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
1fa10 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
1fa20 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1fa30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fa40 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1fa50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fa60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1fa70 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fa90 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
1faa0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
1fab0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1fac0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1fad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fae0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1faf0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1fb00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1fb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
1fb30 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
1fb40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1fb50 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
1fb60 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1fb70 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1fb80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1fb90 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1fba0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1fbb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1fbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
1fc10 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1fc20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
1fc30 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
1fc40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fc50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1fc60 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1fc70 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
1fc80 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  a.backupCount);.
1fc90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1fca0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1fd00 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1fd10 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
1fd20 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fd30 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
1fd40 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1fd50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fd60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1fd70 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1fd80 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1fd90 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1fda0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fdb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1fdc0 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
1fdd0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fdf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1fe00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1fe10 20 20 20 2f 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 0d 0a 0d 0a 23 69  //////////....#i
1fe60 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1fe70 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1fe80 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
1fe90 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1fea0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1feb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fec0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1fed0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1fee0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1fef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ff00 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
1ff10 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
1ff20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ff30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1ff40 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1ff50 67 69 6f 6e 0d 0a 7d 0d 0a                       gion..}..