System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a8e253b245c0b05e7d7cdd596232836d65f6fae9:


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 23  ble)...    //..#
e800: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
e810: 52 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d  RD_LIBRARY_NAME.
e820: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
e830: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
e840: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
e850: 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69  ";..#else..    i
e860: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
e870: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
e880: 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f  = "SQLite.Intero
e890: 70 2e 31 30 30 22 3b 0d 0a 23 65 6e 64 69 66 0d  p.100";..#endif.
e8a0: 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54  .#elif SQLITE_ST
e8b0: 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a  ANDARD..    //..
e8c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
e8d0: 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73  erwise, if the s
e8e0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c  tandard SQLite l
e8f0: 69 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65  ibrary is enable
e900: 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20  d, use it...    
e910: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
e920: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
e930: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69  LITE_DLL = "sqli
e940: 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45  te3";..#elif USE
e950: 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20  _INTEROP_DLL..  
e960: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
e970: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
e980: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
e990: 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  te interop assem
e9a0: 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d  bly is enabled,.
e9b0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
e9c0: 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  e it...    //..#
e9d0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
e9e0: 52 44 5f 4c 49 42 52 41 52 59 5f 4e 41 4d 45 0d  RD_LIBRARY_NAME.
e9f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
ea00: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
ea10: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
ea20: 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69  ";..#else..    i
ea30: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
ea40: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
ea50: 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f  = "SQLite.Intero
ea60: 70 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c  p";..#endif..#el
ea70: 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  se..    //..    
ea80: 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79  // NOTE: Finally
ea90: 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68  , assume that th
eaa0: 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73 73  e mixed-mode ass
eab0: 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20 75  embly is being u
eac0: 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
ead0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
eae0: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
eaf0: 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74  LL = "System.Dat
eb00: 61 2e 53 51 4c 69 74 65 22 3b 0d 0a 23 65 6e 64  a.SQLite";..#end
eb10: 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69  if....    // Thi
eb20: 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69  s section uses i
eb30: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61  nterop calls tha
eb40: 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78  t also fetch tex
eb50: 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69  t length to opti
eb60: 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e  mize conversion.
eb70: 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73  ..    // When us
eb80: 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
eb90: 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70   dll, we can rep
eba0: 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73  lace these calls
ebb0: 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c   with normal sql
ebc0: 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20  ite calls and.. 
ebd0: 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d     // do unoptim
ebe0: 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73  ized conversions
ebf0: 20 69 6e 73 74 65 61 64 20 61 66 74 65 72 77 61   instead afterwa
ec00: 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  rds..    #region
ec10: 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74   interop added t
ec20: 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d  extlength calls.
ec30: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
ec40: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
ec50: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ec60: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
ec70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ec80: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
ec90: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
eca0: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
ecb0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
ecc0: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
ecd0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
ece0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ecf0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ed00: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ed10: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
ed20: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
ed30: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
ed40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
ed50: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
ed60: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
ed70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ed80: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ed90: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
eda0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
edb0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
edc0: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
edd0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
ede0: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
edf0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
ee00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ee10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ee20: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
ee30: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
ee40: 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f  _decltype_intero
ee50: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
ee60: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
ee70: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
ee80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ee90: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
eea0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
eeb0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
eec0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
eed0: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
eee0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
eef0: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
ef00: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
ef10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ef20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ef30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ef40: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
ef50: 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  mn_name_interop(
ef60: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
ef70: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
ef80: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
ef90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
efa0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
efb0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
efc0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
efd0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e  column_name16_in
efe0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
eff0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
f000: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
f010: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f020: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f030: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f040: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
f050: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
f060: 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  gin_name_interop
f070: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
f080: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
f090: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
f0a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f0b0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
f0c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f0d0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f0e0: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
f0f0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
f100: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
f110: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
f120: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
f130: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f140: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f150: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f160: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
f170: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f  lumn_table_name_
f180: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f190: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f1a0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f1b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f1c0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f1d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f1e0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f1f0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
f200: 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  able_name16_inte
f210: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
f220: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
f230: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
f240: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f250: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f260: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f270: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
f280: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f  te3_column_text_
f290: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f2a0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f2b0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f2c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f2d0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f2e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f2f0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f300: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
f310: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
f320: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
f330: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
f340: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
f350: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f360: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f370: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f380: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
f390: 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rmsg_interop(Int
f3a0: 50 74 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20  Ptr db, ref int 
f3b0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
f3c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f3d0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
f3e0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f3f0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f400: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
f410: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
f420: 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
f430: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66   int nBytes, ref
f440: 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65   IntPtr stmt, re
f450: 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  f IntPtr ptrRema
f460: 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d  in, ref int nRem
f470: 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  ain);....    [Dl
f480: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f490: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
f4a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f4b0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f4c0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
f4d0: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69  olumn_metadata_i
f4e0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
f4f0: 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
f500: 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
f510: 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
f520: 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 44   ref IntPtr ptrD
f530: 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74  ataType, ref Int
f540: 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20  Ptr ptrCollSeq, 
f550: 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c  ref int notNull,
f560: 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79   ref int primary
f570: 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74  Key, ref int aut
f580: 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74  oInc, ref int dt
f590: 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c  Len, ref int csL
f5a0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
f5b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f5c0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
f5d0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f5e0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
f5f0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
f600: 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
f610: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
f620: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f630: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f640: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f650: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
f660: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
f670: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
f680: 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
f690: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
f6a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f6b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f6c0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
f6d0: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73  sqlite3_malloc_s
f6e0: 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ize_interop(IntP
f6f0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  tr p);....#if IN
f700: 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b  TEROP_LOG..    [
f710: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f720: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f730: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f740: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
f750: 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
f760: 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b  g_log_interop();
f770: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
f780: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
f790: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
f7a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
f7b0: 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  / These function
f7c0: 73 20 61 64 64 20 65 78 69 73 74 69 6e 67 20 66  s add existing f
f7d0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20  unctionality on 
f7e0: 74 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e  top of SQLite an
f7f0: 64 20 72 65 71 75 69 72 65 20 61 20 6c 69 74 74  d require a litt
f800: 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20  le effort to..  
f810: 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67    // get working
f820: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
f830: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
f840: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72  library...    #r
f850: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
f860: 64 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ded functionalit
f870: 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  y....#if !SQLITE
f880: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
f890: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f8a0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f8b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f8c0: 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
f8d0: 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  rop_libversion()
f8e0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f8f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f900: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f910: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f920: 50 74 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72  Ptr interop_sour
f930: 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b  ceid();....    [
f940: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f950: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f960: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f970: 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63  rn int interop_c
f980: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
f990: 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
f9a0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
f9b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f9c0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f9d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f9e0: 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f  ntPtr interop_co
f9f0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
fa00: 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  int N);....    [
fa10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fa20: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
fa30: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fa40: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
fa50: 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  de sqlite3_close
fa60: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
fa70: 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  db);....    [Dll
fa80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fa90: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
faa0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fab0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
fac0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
fad0: 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28  unction_interop(
fae0: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
faf0: 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
fb00: 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Args, int nType,
fb10: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
fb20: 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
fb30: 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  unc, SQLiteCallb
fb40: 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74  ack fstep, SQLit
fb50: 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
fb60: 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43  final, int needC
fb70: 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20  ollSeq);....    
fb80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fb90: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
fba0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
fbb0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
fbc0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  ode sqlite3_fina
fbd0: 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lize_interop(Int
fbe0: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20  Ptr stmt);....  
fbf0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fc00: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
fc10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fc20: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fc30: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
fc40: 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65  ckup_finish_inte
fc50: 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75  rop(IntPtr backu
fc60: 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  p);....    [DllI
fc70: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fc80: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
fc90: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
fca0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
fcb0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65  qlite3_open_inte
fcc0: 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46  rop(byte[] utf8F
fcd0: 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  ilename, byte[] 
fce0: 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f  vfsName, SQLiteO
fcf0: 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
fd00: 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73  gs, int extFuncs
fd10: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
fd20: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
fd30: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
fd40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fd50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
fd60: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fd70: 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65  ite3_open16_inte
fd80: 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46  rop(byte[] utf8F
fd90: 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  ilename, byte[] 
fda0: 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f  vfsName, SQLiteO
fdb0: 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
fdc0: 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73  gs, int extFuncs
fdd0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
fde0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
fdf0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
fe00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fe10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
fe20: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fe30: 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72  ite3_reset_inter
fe40: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  op(IntPtr stmt);
fe50: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
fe60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
fe70: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
fe80: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
fe90: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f  sqlite3_changes_
fea0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
feb0: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  b);..#endif..// 
fec0: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
fed0: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
fee0: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
fef0: 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63 61   standard api ca
ff00: 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f  ll equivalents o
ff10: 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65  f the above inte
ff20: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23  rop calls..    #
ff30: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
ff40: 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65  versions of inte
ff50: 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d  rop functions...
ff60: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
ff70: 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  DARD....#if !PLA
ff80: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ff90: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ffa0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ffb0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ffc0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ffd0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ffe0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fff0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10000 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10010 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10020 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10030 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10040 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62  _close(IntPtr db
10050 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52  );....#if !INTER
10060 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d  OP_LEGACY_CLOSE.
10070 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10080 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10090 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
100a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
100b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
100c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
100d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
100e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
100f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10100 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10110 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10120 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10130 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  e sqlite3_close_
10140 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f  v2(IntPtr db); /
10150 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65  * 3.7.14+ */..#e
10160 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
10170 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10180 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10190 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
101a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
101b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
101c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
101d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
101e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
101f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10200 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10210 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10220 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10230 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
10240 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
10250 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
10260 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
10270 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
10280 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
10290 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
102a0 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
102b0 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
102c0 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20  ffinal);....#if 
102d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
102e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
102f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10300 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10310 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10320 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10330 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10340 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10350 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10360 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10370 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10380 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10390 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e  ite3_finalize(In
103a0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
103b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
103c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
103d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
103e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
103f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10400 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10410 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10430 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10440 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10460 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10470 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
10480 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61 63  inish(IntPtr bac
10490 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
104a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
104b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
104c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
104d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
104e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
104f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10500 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10510 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10520 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10530 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10540 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10550 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10560 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73  3_reset(IntPtr s
10570 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
10580 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10590 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
105a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
105b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
105c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
105d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
105e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
105f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10600 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10610 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10620 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10630 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
10640 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74  rameter_name(Int
10650 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10660 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10670 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10680 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10690 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
106a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
106b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
106c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
106d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
106e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
106f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10700 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10710 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10720 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10730 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e  database_name(In
10740 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
10750 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
10760 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10770 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10780 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10790 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
107a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
107b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
107c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
107d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
107e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
107f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10800 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
10810 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
10820 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
10830 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10840 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
10850 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10860 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10880 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10890 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
108a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
108b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
108c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
108d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
108e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
108f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10900 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10910 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74  umn_decltype(Int
10920 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10930 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10940 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10950 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10960 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10970 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10980 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10990 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
109a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
109b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
109c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
109d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
109e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
109f0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10a00 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74  decltype16(IntPt
10a10 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10a20 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10a30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10a40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10a50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10a60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10a70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10a80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10a90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10aa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10ab0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10ac0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10ad0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10ae0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
10af0 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
10b00 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
10b10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10b20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10b30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10b40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10b50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10b60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10b70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10b80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10b90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10ba0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10bb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10bc0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
10bd0 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  olumn_name16(Int
10be0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10bf0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10c00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10c10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10c20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10c30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10c40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10c50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10c60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10c70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10c80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10c90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10ca0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10cb0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10cc0 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50  origin_name(IntP
10cd0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10ce0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
10cf0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10d00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10d10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10d20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10d30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10d40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10d50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10d60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10d70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10d80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10d90 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
10da0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
10db0 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  rigin_name16(Int
10dc0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10dd0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10de0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10df0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10e00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10e10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10e20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10e30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10e40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10e60 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10e70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10e80 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10e90 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10ea0 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74  table_name(IntPt
10eb0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10ec0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10ed0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10ee0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10ef0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10f00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10f10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10f20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10f30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10f40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10f50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10f60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10f70 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10f80 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
10f90 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  ble_name16(IntPt
10fa0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10fb0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10fc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10fd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10fe0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10ff0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11000 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11010 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11020 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11030 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11040 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11050 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11060 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11070 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
11080 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  xt(IntPtr stmt, 
11090 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
110a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
110b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
110c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
110d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
110e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
110f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11100 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11110 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11120 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11130 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11140 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11150 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
11160 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74  olumn_text16(Int
11170 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
11180 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
11190 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
111a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
111b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
111c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
111d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
111e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
111f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11200 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11210 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11220 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11230 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
11240 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
11250 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
11260 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11270 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11280 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11290 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
112a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
112b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
112c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
112d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
112e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
112f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11300 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11310 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11320 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
11330 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
11340 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
11350 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
11360 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
11370 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23  ptrRemain);....#
11380 69 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56  if USE_PREPARE_V
11390 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  2..#if !PLATFORM
113a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
113b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
113c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
113d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
113e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
113f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11400 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11410 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11430 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11440 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
11450 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
11460 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62  are_v2(IntPtr db
11470 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
11480 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
11490 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
114a0 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
114b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
114c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
114d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
114e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
114f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11500 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11520 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11530 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11540 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11550 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11560 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
11570 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
11580 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
11590 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74  umn_metadata(Int
115a0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
115b0 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
115c0 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f  lName, byte[] co
115d0 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  lName, ref IntPt
115e0 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 72  r ptrDataType, r
115f0 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c  ef IntPtr ptrCol
11600 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f  lSeq, ref int no
11610 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70  tNull, ref int p
11620 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69  rimaryKey, ref i
11630 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a  nt autoInc);....
11640 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11650 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11670 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11680 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11690 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
116a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
116b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
116c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
116d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
116e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
116f0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11700 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74  value_text(IntPt
11710 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
11720 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11730 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11740 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11750 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11760 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11770 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11780 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11790 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
117a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
117b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
117c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
117d0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
117e0 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b  ext16(IntPtr p);
117f0 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  ....#endif..    
11800 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  // SQLITE_STANDA
11810 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
11820 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
11830 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hese functions a
11840 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61  re custom and ha
11850 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74  ve no equivalent
11860 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72   standard librar
11870 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f  y method...    /
11880 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72  / All of them ar
11890 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73  e "nice to haves
118a0 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73  " and not necess
118b0 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68  arily "need to h
118c0 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67  aves"...    #reg
118d0 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ion no equivalen
118e0 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f  t standard metho
118f0 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  d....#if !SQLITE
11900 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
11910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11920 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
11930 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11940 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
11950 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c  te3_context_coll
11960 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  seq_interop(IntP
11970 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
11980 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e  int type, ref in
11990 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c  t enc, ref int l
119a0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
119b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
119c0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
119d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
119e0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  int sqlite3_cont
119f0 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f  ext_collcompare_
11a00 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
11a10 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70  ontext, byte[] p
11a20 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79  1, int p1len, by
11a30 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c  te[] p2, int p2l
11a40 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
11a50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11a60 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
11a70 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11a80 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11a90 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72  sqlite3_cursor_r
11aa0 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
11ab0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75  Ptr stmt, int cu
11ac0 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72  rsor, ref long r
11ad0 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owid);....    [D
11ae0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11af0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
11b00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11b10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
11b20 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
11b30 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65  column_info_inte
11b40 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
11b50 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62  yte[] catalog, b
11b60 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c  yte[] IndexName,
11b70 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61   byte[] ColumnNa
11b80 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74  me, ref int sort
11b90 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f  Order, ref int o
11ba0 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50  nError, ref IntP
11bb0 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65  tr Collation, re
11bc0 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d  f int colllen);.
11bd0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
11be0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11bf0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11c00 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
11c10 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72  qlite3_table_cur
11c20 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  sor_interop(IntP
11c30 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c  tr stmt, int db,
11c40 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61   int tableRootPa
11c50 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  ge);....#endif..
11c60 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
11c70 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
11c80 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
11c90 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c  Standard API cal
11ca0 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73  ls global across
11cb0 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72   versions.  Ther
11cc0 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74  e are a few inst
11cd0 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70  ances of interop
11ce0 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73   calls..    // s
11cf0 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65  cattered in here
11d00 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f  , but they are o
11d10 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20  nly active when 
11d20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11d30 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63  FRAMEWORK is dec
11d40 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67  lared...    #reg
11d50 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c  ion standard sql
11d60 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d  ite api calls...
11d70 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11d80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11d90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11da0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11db0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11dc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11dd0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11de0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11df0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11e00 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11e10 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11e20 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
11e30 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a  _libversion();..
11e40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11e50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11e60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11e70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11e80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11e90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11ea0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11eb0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11ec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11ed0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11ee0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11ef0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c  rn int sqlite3_l
11f00 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
11f10 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
11f20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11f30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11f40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11f50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11f60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11f70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11f80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11f90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11fa0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11fb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11fc0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11fd0 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
11fe0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11ff0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12000 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12010 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12020 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12030 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12040 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12050 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12060 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12070 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12080 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12090 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
120a0 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
120b0 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70  _used(IntPtr zOp
120c0 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  tName);....#if !
120d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
120e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
120f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12100 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12110 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12130 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12150 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12160 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12170 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12180 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  tr sqlite3_compi
12190 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74  leoption_get(int
121a0 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   N);....#if !PLA
121b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
121c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
121d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
121e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
121f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12200 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12210 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12220 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12230 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12240 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12250 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12260 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12270 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63  _enable_shared_c
12280 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69  ache(..        i
12290 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
122a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
122b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
122c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
122d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
122e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
122f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12300 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12310 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12320 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12330 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12340 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12350 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12360 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c  sqlite3_enable_l
12370 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
12380 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
12390 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d  b, int enable);.
123a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
123b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
123c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
123d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
123e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
123f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12400 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12410 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12420 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12430 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12440 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12450 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
12460 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64  ode sqlite3_load
12470 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20  _extension(..   
12480 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
12490 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c  byte[] fileName,
124a0 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65   byte[] procName
124b0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72  , ref IntPtr pEr
124c0 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ror);....#if !PL
124d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
124e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
124f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12500 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12510 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12530 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12550 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12560 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12570 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12580 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12590 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74  3_overload_funct
125a0 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ion(IntPtr db, I
125b0 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74  ntPtr zName, int
125c0 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20   nArgs);....#if 
125d0 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c  WINDOWS..#if !PL
125e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
125f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12600 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12610 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12620 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12630 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
12640 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
12650 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
12660 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12670 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12680 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
12690 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
126a0 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
126b0 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
126c0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74  qlite3_win32_set
126d0 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69  _directory" SQLi
126e0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
126f0 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20  function is..   
12700 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73   //       only s
12710 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64  upported on Wind
12720 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  ows...    //..  
12730 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12740 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12750 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12760 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63  _win32_set_direc
12770 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20  tory(uint type, 
12780 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  string value);..
12790 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20  ..#if !DEBUG // 
127a0 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20  NOTE: Should be 
127b0 22 57 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d  "WIN32HEAP && !M
127c0 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50  EMDEBUG"..#if !P
127d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
127e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
127f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12800 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12810 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12820 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12830 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12840 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12850 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12860 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
12870 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
12880 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65  3_win32_reset_he
12890 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
128a0 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
128b0 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
128c0 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
128d0 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
128e0 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
128f0 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
12900 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
12910 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
12920 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
12930 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
12940 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
12950 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
12960 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
12970 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
12980 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
12990 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
129a0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
129b0 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
129c0 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
129d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
129e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
129f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
12a00 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74  ite3_win32_reset
12a10 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20  _heap();....#if 
12a20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12a30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12a40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12a50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12a60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12a70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12a80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12a90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12aa0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12ab0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
12ac0 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69   NOTE: The "sqli
12ad0 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63  te3_win32_compac
12ae0 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63  t_heap" SQLite c
12af0 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
12b00 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
12b10 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
12b20 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20  rted on Windows 
12b30 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e  when the Win32 n
12b40 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20  ative allocator 
12b50 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20  is in..    //   
12b60 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79      use (i.e. by
12b70 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65   default, in "Re
12b80 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66  lease" builds of
12b90 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
12ba0 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ite..    //     
12bb0 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66    only).  By def
12bc0 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22  ault, in "Debug"
12bd0 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
12be0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74  m.Data.SQLite, t
12bf0 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
12c00 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61   MEMDEBUG alloca
12c10 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20  tor is used...  
12c20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
12c30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12c40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12c50 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63   sqlite3_win32_c
12c60 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66 20  ompact_heap(ref 
12c70 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a  uint largest);..
12c80 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
12c90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12ca0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12cb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12cc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12cd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12ce0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12cf0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12d00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12d10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12d20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12d30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12d40 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
12d50 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b  3_malloc(int n);
12d60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12d70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12d80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12d90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12db0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12dc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12dd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12de0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12df0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12e00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12e10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12e20 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50  te3_realloc(IntP
12e30 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d  tr p, int n);...
12e40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12e50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12e60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12e70 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12e80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12e90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12ea0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12eb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12ec0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12ed0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12ee0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12ef0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66  n void sqlite3_f
12f00 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ree(IntPtr p);..
12f10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12f20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12f30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12f40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12f50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12f60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12f70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12f80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12f90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12fa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12fb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12fc0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12fd0 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  de sqlite3_open_
12fe0 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  v2(byte[] utf8Fi
12ff0 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  lename, ref IntP
13000 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65  tr db, SQLiteOpe
13010 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
13020 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65  , byte[] vfsName
13030 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13040 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13050 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13060 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13070 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13080 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13090 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
130a0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
130b0 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
130c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
130d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
130e0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
130f0 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
13100 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13110 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13120 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13130 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69  ite3_open16(stri
13140 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66  ng fileName, ref
13150 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
13160 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13170 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13180 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13190 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
131a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
131b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
131c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
131d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
131e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
131f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13200 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13210 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e   void sqlite3_in
13220 74 65 72 72 75 70 74 28 49 6e 74 50 74 72 20 64  terrupt(IntPtr d
13230 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
13240 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13250 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13260 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13270 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13280 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13290 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
132a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
132b0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
132c0 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
132d0 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74  sert_rowid(IntPt
132e0 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  r db);..#endif..
132f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13300 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13310 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13320 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13330 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13340 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13350 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13360 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13370 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13380 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13390 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
133a0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
133b0 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62  hanges(IntPtr db
133c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
133d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
133e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
133f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13410 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13420 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13430 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13440 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
13450 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
13460 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  sed();..#endif..
13470 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13480 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13490 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
134a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
134b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
134c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
134d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
134e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
134f0 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
13500 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
13510 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c  ater(int resetFl
13520 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ag);..#endif....
13530 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13540 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13550 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13560 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13590 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
135a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
135b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
135c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
135d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
135e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
135f0 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
13600 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  n();....#if !PLA
13610 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13620 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13640 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13650 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13660 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13670 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13680 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13690 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
136a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
136b0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
136c0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
136d0 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e  _busy_timeout(In
136e0 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29  tPtr db, int ms)
136f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13700 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13710 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13720 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13730 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13740 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13750 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13760 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13770 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13780 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13790 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
137a0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
137b0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
137c0 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74  ear_bindings(Int
137d0 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
137e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
137f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13800 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13810 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13820 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13830 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13840 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13850 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13860 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13870 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13880 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
13890 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
138a0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
138b0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
138c0 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20  t index, Byte[] 
138d0 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
138e0 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69  , IntPtr nTransi
138f0 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ent);....#if !PL
13900 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13910 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13930 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13940 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13950 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13960 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
13970 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13980 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
13990 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
139a0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
139b0 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65  nt index, double
139c0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
139d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
139e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
139f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13a00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13a10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13a20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13a30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13a40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13a50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13a60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13a70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13a80 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
13a90 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
13aa0 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  d_int(IntPtr stm
13ab0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e  t, int index, in
13ac0 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  t value);....   
13ad0 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
13ae0 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75  : This really ju
13af0 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65  st calls "sqlite
13b00 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77  3_bind_int"; how
13b10 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
13b20 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
13b30 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
13b40 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
13b50 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69  igned (32-bit) i
13b60 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d  nteger...    //.
13b70 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13b80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13b90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13ba0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
13bb0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
13bc0 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c  3_bind_int", Cal
13bd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13be0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13bf0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13c00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
13c20 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
13c30 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d  te3_bind_int")].
13c40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13c50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13c60 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
13c70 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
13c80 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  _uint(IntPtr stm
13c90 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69  t, int index, ui
13ca0 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  nt value);....#i
13cb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13cc0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13cd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13ce0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13cf0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13d00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13d10 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
13d20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13d30 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
13d40 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
13d50 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
13d60 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f  t, int index, lo
13d70 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
13d80 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  if....    //..  
13d90 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
13da0 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c  really just call
13db0 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  s "sqlite3_bind_
13dc0 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c  int64"; however,
13dd0 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
13de0 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
13df0 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
13e00 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
13e10 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69   long (64-bit) i
13e20 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d  nteger...    //.
13e30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13e40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13e50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13e60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
13e70 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
13e80 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43  3_bind_int64", C
13e90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13ea0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13eb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
13ec0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13ed0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
13ee0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
13ef0 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74  _bind_uint64(Int
13f00 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
13f10 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65  dex, ulong value
13f20 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
13f30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13f40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13f50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13f60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13f70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13f80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13f90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13fa0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13fb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13fc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13fd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
13fe0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
13ff0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
14000 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14010 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
14020 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14030 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14050 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14060 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14070 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14080 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
140a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
140b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
140c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
140d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
140e0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
140f0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14100 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76   index, byte[] v
14110 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
14120 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
14130 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
14140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14150 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14170 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14180 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14190 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
141a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
141b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
141c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
141d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
141e0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
141f0 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
14200 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  er_count(IntPtr 
14210 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
14220 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14230 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14240 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14250 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14260 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14270 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14280 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
142a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
142b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
142c0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
142d0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
142e0 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50  meter_index(IntP
142f0 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20  tr stmt, byte[] 
14300 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  strName);....#if
14310 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14320 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14330 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14340 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14350 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14360 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14370 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14380 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14390 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
143a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
143b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
143c0 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
143d0 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
143e0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
143f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14400 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14410 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14420 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14430 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14440 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14450 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14470 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14480 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14490 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
144a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
144b0 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d  _step(IntPtr stm
144c0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
144d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
144e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
144f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14500 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14510 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14520 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14530 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14540 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14550 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14560 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14570 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
14580 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c  te3_stmt_readonl
14590 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20  y(IntPtr stmt); 
145a0 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a  /* 3.7.4+ */....
145b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
145c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
145d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
145e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
145f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14610 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
14620 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14630 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
14640 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
14650 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
14660 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64  nt index);..#end
14670 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
14680 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14690 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
146a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
146b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
146c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
146d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
146e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
146f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14700 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14710 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14720 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
14730 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e  e3_column_int(In
14740 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14750 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
14760 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14770 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14780 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14790 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
147a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
147b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
147c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
147d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
147e0 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ong sqlite3_colu
147f0 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  mn_int64(IntPtr 
14800 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
14810 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
14820 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14830 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14850 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14860 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14870 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14880 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14890 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
148a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
148b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
148c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
148d0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
148e0 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  umn_blob(IntPtr 
148f0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
14900 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14910 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14920 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14930 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14940 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14950 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14960 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14970 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14990 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
149a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
149b0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
149c0 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49  3_column_bytes(I
149d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
149e0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
149f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14a00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14a10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14a20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14a30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14a40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14a50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14a60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14a70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14a80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14a90 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
14aa0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
14ab0 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73 74  ytes16(IntPtr st
14ac0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
14ad0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14ae0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14af0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14b00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14b10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14b20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14b30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14b40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14b50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14b60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14b70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14b80 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
14b90 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
14ba0 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
14bb0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
14bc0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14bd0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14be0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14bf0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14c00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14c10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14c20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14c30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14c40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14c50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14c60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14c70 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
14c80 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
14c90 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74  _collation(IntPt
14ca0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
14cb0 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Name, int nType,
14cc0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
14cd0 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
14ce0 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  func);....#if !P
14cf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14d00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14d10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14d20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14d30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14d40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14d50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14d70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14d80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14d90 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
14da0 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
14db0 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  _count(IntPtr co
14dc0 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
14dd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14de0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14df0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14e00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14e10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14e20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14e30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14e40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14e50 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14e60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14e70 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
14e80 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
14e90 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b  _blob(IntPtr p);
14ea0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14eb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14ec0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14ee0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14ef0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14f00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14f10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14f20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14f30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14f40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14f50 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
14f60 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74  _value_bytes(Int
14f70 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
14f80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14f90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14fa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14fb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14fc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14fd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14fe0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14ff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15000 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15010 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15020 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
15030 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
15040 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b  tes16(IntPtr p);
15050 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15060 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15070 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15080 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
150a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
150b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
150c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
150d0 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
150e0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
150f0 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  uble(IntPtr p);.
15100 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
15110 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15120 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15130 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15140 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15150 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15160 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15170 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15180 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15190 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
151a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
151b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
151c0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
151d0 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  t(IntPtr p);....
151e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
151f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15200 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15210 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15220 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15230 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15240 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
15250 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15260 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
15270 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e  3_value_int64(In
15280 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66  tPtr p);..#endif
15290 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
152a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
152b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
152c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
152d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
152e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
152f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15300 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15310 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15320 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15330 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15340 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
15350 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  y sqlite3_value_
15360 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  type(IntPtr p);.
15370 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15380 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15390 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
153a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
153b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
153c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
153d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
153e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
153f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15400 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15410 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15420 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
15430 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74  _result_blob(Int
15440 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
15450 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
15460 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52  Size, IntPtr pvR
15470 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
15480 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
154a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
154b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
154c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
154d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
154e0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
154f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15500 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
15510 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74  esult_double(Int
15520 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75  Ptr context, dou
15530 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ble value);..#en
15540 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
15550 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15560 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15570 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15580 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15590 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
155a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
155b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
155c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
155d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
155e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
155f0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
15600 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
15610 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  r(IntPtr context
15620 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c  , byte[] strErr,
15630 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
15640 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15650 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15670 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15680 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15690 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
156a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
156b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
156c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
156d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
156e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
156f0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
15700 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49  ult_error_code(I
15710 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53  ntPtr context, S
15720 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76  QLiteErrorCode v
15730 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
15740 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15750 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15760 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15770 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15780 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15790 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
157a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
157b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
157c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
157d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
157e0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
157f0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
15800 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50  rror_toobig(IntP
15810 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
15820 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15830 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15840 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15850 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15860 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15870 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15880 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15890 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
158a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
158b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
158c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
158d0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
158e0 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d  sult_error_nomem
158f0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
15900 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15910 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15920 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15930 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15940 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15950 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15960 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15970 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15990 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
159a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
159b0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
159c0 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28  e3_result_value(
159d0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
159e0 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a  IntPtr value);..
159f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15a00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15a10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15a20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15a30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15a40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15a50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15a60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15a70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15a80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15a90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15aa0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
15ab0 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28  result_zeroblob(
15ac0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15ad0 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
15ae0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15af0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15b00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15b10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15b20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15b30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15b40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15b50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15b60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15b70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    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 28 49 6e 74 50 74 72 20 63 6f  lt_int(IntPtr co
15bb0 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65  ntext, int value
15bc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15bd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15be0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15bf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15c00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15c10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15c20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15c30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15c40 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
15c50 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
15c60 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74  nt64(IntPtr cont
15c70 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29  ext, long value)
15c80 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
15c90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15ca0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15cb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15cc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15cd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15ce0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15cf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15d00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15d10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15d20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15d30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
15d40 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
15d50 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f  t_null(IntPtr co
15d60 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
15d70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15d80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15d90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15da0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15db0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15dc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15dd0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15de0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15df0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15e00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15e10 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15e20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
15e30 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  text(IntPtr cont
15e40 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  ext, byte[] valu
15e50 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74  e, int nLen, Int
15e60 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
15e70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15e80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15e90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15ea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15eb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15ec0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15ed0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15ee0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15ef0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15f00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15f10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15f20 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
15f30 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f  te3_aggregate_co
15f40 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  ntext(IntPtr con
15f50 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73  text, int nBytes
15f60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15f70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15f80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15f90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15fa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15fb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
15fc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
15fd0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
15fe0 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
15ff0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16000 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
16010 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
16020 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
16030 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16040 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
16050 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
16060 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
16070 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
16080 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
16090 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
160a0 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
160b0 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
160c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
160d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
160e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
160f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16100 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16110 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
16120 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
16130 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
16140 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16150 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16160 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
16170 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
16180 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16190 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
161a0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
161b0 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74  lt_error16(IntPt
161c0 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e  r context, strin
161d0 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  g strName, int n
161e0 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
161f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16200 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16210 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16220 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16230 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16240 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
16250 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
16260 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
16270 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16280 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16290 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
162a0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
162b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
162c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
162d0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
162e0 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74  ult_text16(IntPt
162f0 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e  r context, strin
16300 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  g strName, int n
16310 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  Len, IntPtr pvRe
16320 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
16330 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c  INTEROP_CODEC ||
16340 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
16350 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  _SEE..#if !PLATF
16360 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16370 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16380 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16390 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
163a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
163b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
163c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
163d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
163e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
163f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16400 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
16410 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b  orCode sqlite3_k
16420 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ey(IntPtr db, by
16430 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65  te[] key, int ke
16440 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ylen);....#if !P
16450 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16460 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16480 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16490 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
164a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
164b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
164c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
164d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
164e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
164f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16500 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16510 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20  e3_rekey(IntPtr 
16520 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20  db, byte[] key, 
16530 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65  int keylen);..#e
16540 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ndif....#if INTE
16550 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56  ROP_INCLUDE_ZIPV
16560 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  FS..#if !PLATFOR
16570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16580 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
165a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
165b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
165c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
165d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
165e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
165f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16600 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16610 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73  tern void zipvfs
16620 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69  Init_v2();....#i
16630 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16640 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16650 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16660 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16670 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16680 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16690 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
166a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
166b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
166c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
166d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
166e0 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76  oid zipvfsInit_v
166f0 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d  3(int regDflt);.
16700 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
16710 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16720 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16730 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16740 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16750 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16760 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16770 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16780 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16790 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
167a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
167b0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
167c0 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73   sqlite3_progres
167d0 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72  s_handler(IntPtr
167e0 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51   db, int ops, SQ
167f0 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c  LiteProgressCall
16800 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
16810 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
16820 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16830 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16840 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16850 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16860 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16870 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16880 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16890 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
168a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
168b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
168c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
168d0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65  ntPtr sqlite3_se
168e0 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74  t_authorizer(Int
168f0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75  Ptr db, SQLiteAu
16900 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b  thorizerCallback
16910 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
16920 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
16930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16950 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16960 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16970 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16980 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16990 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
169a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
169b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
169c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
169d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
169e0 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65  r sqlite3_update
169f0 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
16a00 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c   SQLiteUpdateCal
16a10 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
16a20 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
16a30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16a40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16a50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16a60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16a70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16a80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16a90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16aa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16ab0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16ac0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16ad0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16ae0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
16af0 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74  ommit_hook(IntPt
16b00 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d  r db, SQLiteComm
16b10 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  itCallback func,
16b20 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
16b30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16b40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16b50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16b60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16b70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16b80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16b90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16ba0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16bb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16bc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16bd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16be0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
16bf0 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72  te3_trace(IntPtr
16c00 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65   db, SQLiteTrace
16c10 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
16c20 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
16c30 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73  ..    // Since s
16c40 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
16c50 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
16c60 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
16c70 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
16c80 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
16c90 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
16ca0 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20   possible calls 
16cb0 74 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20  that we want to 
16cc0 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46  use...#if !PLATF
16cd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16ce0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16cf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16d00 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
16d10 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20  qlite3_config", 
16d20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16d30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16d40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16d50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16d70 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
16d80 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d  qlite3_config")]
16d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16da0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16db0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16dc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  Code sqlite3_con
16dd0 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43  fig_none(SQLiteC
16de0 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29  onfigOpsEnum op)
16df0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16e00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16e10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16e20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16e30 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
16e40 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
16e50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16e60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16e70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16e80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16ea0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
16eb0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
16ec0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16ed0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16ee0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
16ef0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
16f00 69 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e  ig_int(SQLiteCon
16f10 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69  figOpsEnum op, i
16f20 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  nt value);....#i
16f30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16f40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16f50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16f60 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
16f70 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
16f80 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
16f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16fb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16fc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16fd0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
16fe0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
16ff0 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
17000 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17010 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17020 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17030 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28  ite3_config_log(
17040 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
17050 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f  num op, SQLiteLo
17060 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  gCallback func, 
17070 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
17080 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17090 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
170a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
170b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
170c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
170d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
170e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
170f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17100 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17110 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17120 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17130 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17140 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b  e3_rollback_hook
17150 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
17160 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61  teRollbackCallba
17170 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
17180 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
17190 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
171a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
171b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
171c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
171d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
171e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
171f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17210 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17220 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17230 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17240 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68  Ptr sqlite3_db_h
17250 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
17260 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
17270 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17280 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17290 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
172a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
172b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
172c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
172d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
172e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
172f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17300 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17310 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
17320 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
17330 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  db_release_memor
17340 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  y(IntPtr db);...
17350 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17360 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17370 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17380 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17390 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
173a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
173b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
173c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
173d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
173e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
173f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17400 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
17410 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74  _db_filename(Int
17420 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
17430 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
17440 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17450 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17460 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17470 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
17480 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
17490 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
174a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
174b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
174c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
174d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
174e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
174f0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
17500 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
17510 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17520 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17530 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17540 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
17550 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
17560 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
17570 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17580 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17590 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
175a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
175b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
175c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
175d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
175e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
175f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17600 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17610 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17620 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17630 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
17640 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
17650 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
17660 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17670 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
17680 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17690 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
176a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
176b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
176c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
176d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
176e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
176f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17700 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
17710 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
17720 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
17730 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
17740 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
17750 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
17760 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
17770 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
17780 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17790 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
177a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
177b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
177c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
177d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
177e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
177f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17800 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17810 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17820 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
17830 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
17840 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
17850 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
17860 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17870 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17880 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17890 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
178a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
178b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
178c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
178d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
178e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
178f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17900 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
17910 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
17920 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
17930 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17940 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17950 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17960 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17970 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17980 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17990 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
179a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
179b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
179c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
179d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
179e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
179f0 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
17a00 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
17a10 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
17a20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
17a30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17a40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17a50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17a60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17a70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17a80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17a90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17aa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17ab0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17ac0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17ad0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17ae0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17af0 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
17b00 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
17b10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17b20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17b30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17b40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17b50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17b70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17b90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17ba0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17bb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17bc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17bd0 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
17be0 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
17bf0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17c00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17c10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17c20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17c30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17c40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17c50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17c60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17c70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17c80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17c90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17ca0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
17cb0 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
17cc0 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
17cd0 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
17ce0 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
17cf0 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
17d00 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
17d10 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
17d20 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
17d30 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
17d40 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
17d50 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
17d60 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
17d70 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
17d80 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
17d90 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
17da0 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
17db0 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
17dc0 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
17dd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17de0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17df0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17e00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17e10 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17e20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17e30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17e40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17e50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17e60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17e70 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
17e80 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
17e90 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
17ea0 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
17eb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17ec0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17ed0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17ef0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17f00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17f10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17f20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17f30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17f40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17f50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17f60 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17f70 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
17f80 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
17f90 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
17fa0 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
17fb0 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
17fc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17fd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17fe0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17ff0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18000 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18010 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18020 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18030 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18040 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18050 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18060 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18070 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
18080 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
18090 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
180a0 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
180b0 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
180c0 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
180d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
180e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
180f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18100 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18110 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18120 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18130 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18140 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18160 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18170 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18180 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
18190 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
181a0 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
181b0 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
181c0 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
181d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
181e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
181f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18200 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18210 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18220 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18230 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18240 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18250 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18260 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18270 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18280 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
18290 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
182a0 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
182b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
182c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
182d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
182e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
182f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18300 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18310 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18320 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18330 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18340 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18350 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
18360 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
18370 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
18380 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
18390 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
183a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
183b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
183c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
183d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
183e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
183f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18410 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18420 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18430 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18440 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18450 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
18460 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
18470 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20  r zSQL);....#if 
18480 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18490 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
184a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
184b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
184c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
184d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
184e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
184f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18500 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18510 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18520 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18530 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  Ptr sqlite3_mpri
18540 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61  ntf(IntPtr forma
18550 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a  t, __arglist);..
18560 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
18570 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20  ..    // SQLite 
18580 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61  API calls that a
18590 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22  re provided by "
185a0 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65  well-known" exte
185b0 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20  nsions that may 
185c0 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20  be statically.. 
185d0 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74     // linked wit
185e0 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
185f0 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
18600 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
18610 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  e...    #region 
18620 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65  extension sqlite
18630 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20   api calls..#if 
18640 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
18650 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54  TABLE..#if !PLAT
18660 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18670 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18680 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18690 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
186a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
186b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
186c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
186d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
186e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
186f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18700 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
18710 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
18720 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28  sposable_module(
18730 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
18740 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69  r name, ref sqli
18750 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c  te3_module modul
18760 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  e, IntPtr pClien
18770 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d  tData, xDestroyM
18780 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b  odule xDestroy);
18790 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
187a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
187b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
187c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
187d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
187e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
187f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18800 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18820 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18830 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18840 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
18850 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
18860 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29  (IntPtr pModule)
18870 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
18880 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
18890 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
188e0 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69      #region sqli
188f0 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63  te interop api c
18900 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61  alls (.NET Compa
18910 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c  ct Framework onl
18920 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  y)..#if PLATFORM
18930 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18940 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
18950 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49  NDARD..    [DllI
18960 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18970 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
18980 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
18990 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  oid sqlite3_last
189a0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e  _insert_rowid_in
189b0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
189c0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29   ref long rowId)
189d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
189e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
189f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18a00 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
18a10 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
18a20 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65  _used_interop(re
18a30 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
18a40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18a50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18a60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18a70 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
18a80 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
18a90 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28  ghwater_interop(
18aa0 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72  int resetFlag, r
18ab0 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
18ac0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18ad0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18ae0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18af0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18b00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18b10 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69  e3_bind_double_i
18b20 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
18b30 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
18b40 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
18b50 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18b60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18b70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18b80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18b90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18ba0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
18bb0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
18bc0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
18bd0 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long 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 2c 20 45  rt(SQLITE_DLL, E
18c00 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
18c10 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
18c20 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20  interop")]..    
18c30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18c40 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18c50 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
18c60 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72  ind_uint64_inter
18c70 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
18c80 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75  int index, ref u
18c90 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
18ca0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18cb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
18cc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18cd0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
18ce0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
18cf0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
18d00 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
18d10 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
18d20 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
18d30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18d40 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18d50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18d60 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
18d70 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72  lumn_int64_inter
18d80 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
18d90 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
18da0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
18db0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18dc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18de0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
18df0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
18e00 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18e10 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  p, ref double va
18e20 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
18e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18e40 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18e50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18e60 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
18e70 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
18e80 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
18e90 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
18ea0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18eb0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18ec0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18ed0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
18ee0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
18ef0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
18f00 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
18f10 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
18f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18f30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18f40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18f50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
18f60 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
18f70 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
18f80 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
18f90 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
18fa0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18fb0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18fc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18fd0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
18fe0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
18ff0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
19000 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20  _interop(..     
19010 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e     IntPtr db, In
19020 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74  tPtr name, IntPt
19030 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69  r pModule, int i
19040 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65  Version, xCreate
19050 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20   xCreate,..     
19060 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e     xConnect xCon
19070 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78  nect, xBestIndex
19080 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69   xBestIndex, xDi
19090 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
190a0 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  nect,..        x
190b0 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
190c0 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78  , xOpen xOpen, x
190d0 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46  Close xClose, xF
190e0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a  ilter xFilter,..
190f0 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e          xNext xN
19100 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20  ext, xEof xEof, 
19110 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c  xColumn xColumn,
19120 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20   xRowId xRowId, 
19130 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c  xUpdate xUpdate,
19140 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e  ..        xBegin
19150 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78   xBegin, xSync x
19160 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43  Sync, xCommit xC
19170 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b  ommit, xRollback
19180 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20   xRollback,..   
19190 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
191a0 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
191b0 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  , xRename xRenam
191c0 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  e, xSavepoint xS
191d0 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20  avepoint,..     
191e0 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c     xRelease xRel
191f0 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54  ease, xRollbackT
19200 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  o xRollbackTo, I
19210 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
19220 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  a,..        xDes
19230 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
19240 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  royModule);..#en
19250 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54  dif..    // PLAT
19260 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19270 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
19280 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23  _STANDARD..    #
19290 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
192a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
192f0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
19300 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69  ve Delegates..#i
19310 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
19320 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
19330 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19340 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
19350 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
19360 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
19370 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19380 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
19390 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
193a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
193b0 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
193c0 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
193d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
193e0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
193f0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
19400 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
19410 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
19420 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
19430 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
19440 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
19450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
194a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
194b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
194c0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
194d0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
194e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
194f0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
19500 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
19510 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
19520 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
19530 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
19540 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
19550 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
19560 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
19570 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
19580 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
19590 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
195a0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
195b0 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
195c0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
195d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
19620 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19630 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
19640 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
19650 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
19660 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19670 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
19680 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
19690 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
196a0 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
196b0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
196c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
196d0 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
196e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19730 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19740 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19750 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
19760 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
19770 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
19780 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
19790 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
197a0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
197b0 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
197c0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
197d0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
197e0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
19840 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19850 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
19860 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
19870 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
19880 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19890 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
198a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
198b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
198c0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
198d0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
198e0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
198f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
19940 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19950 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19960 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
19970 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
19980 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19990 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
199a0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
199b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
199c0 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
199d0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
199e0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
199f0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
19a00 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
19a60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19a70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
19a80 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
19a90 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
19aa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19ab0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
19ac0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
19ad0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
19ae0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  lose(..        I
19af0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
19b00 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
19b60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19b70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19b80 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
19b90 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
19ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
19bb0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
19bc0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
19bd0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19be0 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20   xFilter(..     
19bf0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
19c00 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
19c10 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
19c20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
19c30 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
19c40 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
19c50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d  tr argv..    );.
19c60 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cb0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
19cc0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19cd0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
19ce0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
19cf0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
19d00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19d10 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
19d20 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
19d30 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
19d40 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
19d50 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
19d60 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
19d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19db0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
19dc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19dd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
19de0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
19df0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
19e00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19e10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
19e20 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
19e30 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
19e40 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
19e50 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
19e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
19eb0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19ec0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
19ed0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
19ee0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
19ef0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19f00 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
19f10 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
19f20 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
19f30 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  e xColumn(..    
19f40 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
19f50 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  or,..        Int
19f60 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
19f70 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
19f80 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
19fe0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19ff0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a000 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a010 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a020 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a030 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a040 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a050 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1a060 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
1a070 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1a080 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  sor,..        re
1a090 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
1a0a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a100 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a110 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a120 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a130 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a140 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a150 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a160 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a170 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a180 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
1a190 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1a1a0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
1a1b0 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
1a1c0 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
1a1d0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
1a1e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a240 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a250 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a260 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a270 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a280 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a290 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a2a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a2b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1a2c0 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
1a2d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1a2e0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
1a2f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a340 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a350 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a360 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1a370 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1a380 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a390 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1a3a0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1a3b0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1a3c0 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20  Code xSync(..   
1a3d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1a3e0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
1a3f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a440 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a450 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a460 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1a470 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1a480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a490 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1a4a0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1a4b0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1a4c0 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
1a4d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1a4e0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1a4f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a540 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a550 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a560 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1a570 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1a580 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a590 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1a5a0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1a5b0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1a5c0 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
1a5d0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1a5e0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
1a5f0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1a600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a640 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1a650 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a660 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1a670 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1a680 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1a690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a6a0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1a6b0 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
1a6c0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
1a6d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1a6e0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1a6f0 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
1a700 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
1a710 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
1a720 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
1a730 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ack,..        re
1a740 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61  f IntPtr pUserDa
1a750 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ta..    );....  
1a760 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a7b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a7c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a7d0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1a7e0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1a7f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a800 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1a810 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1a820 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1a830 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
1a840 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1a850 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
1a860 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
1a870 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1a8d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a8e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1a8f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1a900 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1a910 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1a930 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1a940 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
1a950 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
1a960 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1a970 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
1a980 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
1a990 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9e0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1a9f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1aa00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1aa10 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1aa20 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1aa30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1aa40 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1aa50 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1aa60 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c  teErrorCode xRel
1aa70 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  ease(..        I
1aa80 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
1aa90 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
1aaa0 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
1aab0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ab00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ab10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ab20 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1ab30 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1ab40 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1ab50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1ab60 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1ab70 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1ab80 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
1ab90 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  kTo(..        In
1aba0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1abb0 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
1abc0 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
1abd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ac20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ac30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ac40 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1ac50 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1ac60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ac70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1ac80 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1ac90 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
1aca0 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
1acb0 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
1acc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
1acd0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1ad30 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
1ad40 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66   Structures..#if
1ad50 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
1ad60 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72  _TABLE..    [Str
1ad70 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
1ad80 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
1ad90 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1ada0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
1adb0 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
1adc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1add0 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20   iVersion;..    
1ade0 20 20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61      public xCrea
1adf0 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20  te xCreate;..   
1ae00 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e       public xCon
1ae10 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a  nect xConnect;..
1ae20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1ae30 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
1ae40 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70  ndex;..        p
1ae50 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63  ublic xDisconnec
1ae60 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a  t xDisconnect;..
1ae70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1ae80 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
1ae90 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1aea0 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a  c xOpen xOpen;..
1aeb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1aec0 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20  Close xClose;.. 
1aed0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
1aee0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a  ilter xFilter;..
1aef0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1af00 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20  Next xNext;..   
1af10 20 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66       public xEof
1af20 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20   xEof;..        
1af30 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
1af40 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
1af50 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78   public xRowId x
1af60 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20  RowId;..        
1af70 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
1af80 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
1af90 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78   public xBegin x
1afa0 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20  Begin;..        
1afb0 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79  public xSync xSy
1afc0 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nc;..        pub
1afd0 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  lic xCommit xCom
1afe0 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  mit;..        pu
1aff0 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78  blic xRollback x
1b000 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20  Rollback;..     
1b010 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46     public xFindF
1b020 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
1b030 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  ction;..        
1b040 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
1b050 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
1b060 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
1b070 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
1b080 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
1b090 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
1b0a0 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
1b0b0 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
1b0c0 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
1b0d0 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
1b0e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b0f0 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
1b100 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  point;..        
1b110 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
1b120 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
1b130 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
1b140 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
1b150 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  o;..    }....   
1b160 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b1b0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
1b1c0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
1b1d0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
1b1e0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
1b1f0 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20  qlite3_vtab..   
1b200 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
1b210 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  ic IntPtr pModul
1b220 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1b230 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
1b240 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
1b250 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1b260 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
1b270 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1b280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b2d0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1b2e0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1b2f0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1b300 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1b310 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
1b320 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
1b330 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1b340 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  pVTab;..    }...
1b350 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b3a0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1b3b0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1b3c0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1b3d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1b3e0 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
1b3f0 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  _constraint..   
1b400 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
1b410 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
1b420 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  _constraint(..  
1b430 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b440 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20  IndexConstraint 
1b450 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
1b460 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1b470 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
1b480 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1b490 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
1b4a0 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  traint != null).
1b4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4d0 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72  iColumn = constr
1b4e0 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  aint.iColumn;.. 
1b4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
1b500 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  p = constraint.o
1b510 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
1b520 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e      usable = con
1b530 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d  straint.usable;.
1b540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b550 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63   iTermOffset = c
1b560 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
1b570 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
1b580 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1b590 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1b5f0 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
1b600 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
1b610 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
1b620 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
1b630 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
1b640 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
1b650 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1b660 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
1b670 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
1b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
1b6d0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1b6e0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1b6f0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1b700 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1b710 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a  _index_orderby..
1b720 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
1b730 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
1b740 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20  dex_orderby(..  
1b750 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b760 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64  IndexOrderBy ord
1b770 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
1b780 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
1b790 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
1b7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b7b0 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d    if (orderBy !=
1b7c0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1b7d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b7e0 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
1b7f0 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e   orderBy.iColumn
1b800 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b810 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42     desc = orderB
1b820 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  y.desc;..       
1b830 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1b840 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b890 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b8a0 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
1b8b0 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
1b8c0 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
1b8d0 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
1b8e0 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
1b8f0 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
1b900 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d  r ASC. */..    }
1b910 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b960 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
1b970 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
1b980 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
1b990 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b9a0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
1b9b0 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
1b9c0 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sage..    {..   
1b9d0 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
1b9e0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
1b9f0 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
1ba00 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
1ba10 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
1ba20 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
1ba30 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
1ba40 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
1ba50 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
1ba60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ba70 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
1ba80 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sage != null).. 
1ba90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
1bab0 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72  gvIndex = constr
1bac0 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e  aintUsage.argvIn
1bad0 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
1bae0 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e        omit = con
1baf0 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
1bb00 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
1bb10 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1bb20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1bb70 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1bb80 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
1bb90 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74   /* if >0, const
1bba0 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
1bbb0 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
1bbc0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1bbd0 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20  lic byte omit;  
1bbe0 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
1bbf0 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
1bc00 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d  s constraint */.
1bc10 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1bc70 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1bc80 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1bc90 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
1bca0 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
1bcb0 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
1bcc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
1bcd0 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
1bce0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1bcf0 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20  nConstraint; /* 
1bd00 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
1bd10 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  s in aConstraint
1bd20 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1bd30 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73  lic IntPtr aCons
1bd40 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  traint;..       
1bd50 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64   public int nOrd
1bd60 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d 62  erBy;    /* Numb
1bd70 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
1bd80 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20 20   aOrderBy */..  
1bd90 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1bda0 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
1bdb0 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
1bdc0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
1bdd0 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
1bde0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
1bdf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1be00 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
1be10 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73      /* Number us
1be20 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  ed to identify t
1be30 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20  he index */..   
1be40 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
1be50 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
1be60 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
1be70 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
1be80 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
1be90 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  oc */..        p
1bea0 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
1beb0 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
1bec0 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
1bed0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
1bee0 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
1bef0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6f      public int o
1bf00 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20  rderByConsumed; 
1bf10 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70   /* True if outp
1bf20 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72  ut is already or
1bf30 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  dered */..      
1bf40 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
1bf50 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
1bf60 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
1bf70 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
1bf80 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
1bf90 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
1bfa0 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
1bfb0 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
1bfc0 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
1bfd0 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
1bfe0 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
1bff0 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67 73 3b  xFlags idxFlags;
1c000 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49   /* Mask of SQLI
1c010 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20  TE_INDEX_SCAN_* 
1c020 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20  flags */..      
1c030 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f    public long co
1c040 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f  lUsed;         /
1c050 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66  * Input: Mask of
1c060 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79   columns used by
1c070 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20   statement */.. 
1c080 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1c090 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
1c0a0 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
1c0b0 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
1c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c100 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
1c110 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
1c120 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72  mework (only) Cr
1c130 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61  iticalHandle Cla
1c140 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ss..#if PLATFORM
1c150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c160 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  K..  internal ab
1c170 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72 69  stract class Cri
1c180 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44  ticalHandle : ID
1c190 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
1c1a0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
1c1b0 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20   _isClosed;..   
1c1c0 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74   protected IntPt
1c1d0 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  r handle;....   
1c1e0 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
1c1f0 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
1c200 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
1c210 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
1c220 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
1c230 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
1c240 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
1c250 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
1c260 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
1c270 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
1c280 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
1c290 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
1c2a0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
1c2b0 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
1c2c0 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
1c2d0 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
1c2e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
1c2f0 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
1c300 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
1c310 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
1c320 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c330 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
1c340 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
1c350 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
1c360 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
1c370 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
1c380 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
1c390 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
1c3a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
1c3b0 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
1c3c0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
1c3d0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
1c3e0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
1c3f0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
1c400 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
1c410 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
1c420 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
1c430 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
1c440 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
1c450 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
1c460 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
1c470 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
1c480 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
1c490 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
1c4a0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
1c4b0 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
1c4c0 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
1c4d0 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
1c4e0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
1c4f0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
1c500 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
1c510 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
1c520 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
1c530 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
1c540 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
1c550 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
1c560 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
1c570 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
1c580 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
1c590 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
1c5a0 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
1c5b0 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
1c5c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
1c5d0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
1c5e0 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
1c5f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c640 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c650 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
1c660 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43  nnectionHandle C
1c670 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e  lass..    // Han
1c680 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67  dles the unmanag
1c690 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e  ed database poin
1c6a0 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65  ter, and provide
1c6b0 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a  s finalization..
1c6c0 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66      // support f
1c6d0 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65  or it...    inte
1c6e0 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
1c6f0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
1c700 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69  onHandle : Criti
1c710 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  calHandle..    {
1c720 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
1c730 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f  NDARD && !PLATFO
1c740 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c750 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
1c760 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76  ernal delegate v
1c770 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
1c780 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  ionCallback(..  
1c790 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1c7a0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1c7b0 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29   hdl, IntPtr db)
1c7c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
1c7d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f  ernal static Clo
1c7e0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
1c7f0 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63  back closeConnec
1c800 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
1c810 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
1c820 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d  loseConnection;.
1c830 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1c840 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1c890 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1c8a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c8b0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
1c8c0 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
1c8d0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1c8e0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
1c8f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c940 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
1c950 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e  vate bool ownHan
1c960 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dle;....        
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c9c0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1c9d0 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
1c9e0 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65  or IntPtr(SQLite
1c9f0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1ca00 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d   db)..        {.
1ca10 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1ca20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  (db != null)..  
1ca30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1ca40 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1ca50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ca60 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1ca70 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a   (db.syncRoot)..
1ca80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ca90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1cab0 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b  eturn db.handle;
1cac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cad0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1cae0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1caf0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
1cb00 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
1cb10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
1cb70 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e  ernal SQLiteConn
1cb80 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74  ectionHandle(Int
1cb90 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e  Ptr db, bool own
1cba0 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
1cbb0 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48       : this(ownH
1cbc0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
1cbd0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1cbe0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cbf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1cc00 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1cc10 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1cc20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1cc30 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61        this.ownHa
1cc40 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65  ndle = ownHandle
1cc50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1cc60 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
1cc70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1cc80 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1cc90 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cce0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1ccf0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
1cd00 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77  onHandle(bool ow
1cd10 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
1cd20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
1cd30 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1cd40 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
1cd50 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1cd60 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c      if (ownHandl
1cd70 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1cd80 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1cd90 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
1cda0 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
1cdb0 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
1cdc0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1cdd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ce20 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
1ce30 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
1ce40 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1ce50 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1ce60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1ce70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ce80 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1ce90 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1cea0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1ceb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cec0 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65    if (!ownHandle
1ced0 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
1cee0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1cef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
1cf00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1cf10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cf20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cf30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cf40 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
1cf50 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
1cf60 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
1cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf80 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
1cf90 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69  Ptr.Zero);....#i
1cfa0 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
1cfb0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
1cfc0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1cfd0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1cfe0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1cff0 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e          closeCon
1d000 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
1d010 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c  calHandle);..#el
1d020 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1d030 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
1d040 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1d050 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1d060 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1d070 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
1d080 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
1d090 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  andle);..#endif.
1d0a0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
1d0b0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1d0c0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1d0d0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d100 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1d110 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1d120 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1d130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d140 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1d150 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1d160 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1d170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
1d180 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
1d190 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
1d1a0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1d1b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d1c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1d1d0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1d200 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
1d210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d220 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1d230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d240 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d250 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
1d260 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1d270 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1d280 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2a0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
1d2b0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
1d2c0 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
1d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2e0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
1d2f0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
1d300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1d320 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1d330 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
1d340 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1d350 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
1d360 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
1d370 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
1d380 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
1d390 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
1d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1d3b0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
1d3c0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1d3d0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
1d3e0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1d3f0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1d400 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1d410 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
1d420 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1d430 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
1d440 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
1d450 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1d460 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1d470 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1d480 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1d490 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1d4a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4c0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
1d4d0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
1d4e0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
1d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d500 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
1d510 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
1d520 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1d530 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
1d540 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
1d550 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
1d560 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
1d580 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
1d590 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1d5a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d5b0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1d5c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d5d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d5e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d600 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
1d610 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
1d620 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1d630 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d650 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1d660 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1d670 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1d680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d690 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
1d6a0 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
1d6b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1d6c0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
1d6d0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1d6e0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1d6f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1d700 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1d710 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1d720 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d770 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
1d780 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1d790 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
1d7a0 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
1d7b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d7c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1d7d0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1d7e0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
1d7f0 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e  a.connectionCoun
1d800 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
1d810 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1d820 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d870 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
1d880 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20   OwnHandle..    
1d890 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d8a0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
1d8b0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1d8c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d8d0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1d8e0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1d8f0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1d910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d920 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e        return own
1d930 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
1d940 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1d950 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1d960 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d9c0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1d9d0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
1d9e0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
1d9f0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
1da00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1da10 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1da20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1da30 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1da40 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1da50 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1da60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1da70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1da80 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
1da90 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1dab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1dac0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1dad0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1dae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1db20 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1db30 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1db40 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
1db50 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
1db60 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1db70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1db80 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1db90 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1dba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1dbb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1dbc0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
1dbd0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
1dbe0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1dbf0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1dc00 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1dc10 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1dc70 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
1dc80 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43  tatementHandle C
1dc90 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
1dca0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
1dcb0 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
1dcc0 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
1dcd0 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20  statements...   
1dce0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
1dcf0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61   class SQLiteSta
1dd00 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43  tementHandle : C
1dd10 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
1dd20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1dd30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dd40 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
1dd50 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
1dd60 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
1dd70 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
1dd80 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1dd90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1dde0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
1ddf0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
1de00 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
1de10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1de20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1de60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1de70 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
1de80 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
1de90 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
1dea0 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  dle stmt)..     
1deb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1dec0 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75    if (stmt != nu
1ded0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1dee0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1def0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1df00 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1df10 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79     lock (stmt.sy
1df20 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1df30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1df40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1df50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
1df60 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  tmt.handle;..   
1df70 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1df80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1df90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1dfa0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1dfb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1dfc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e010 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1e020 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
1e030 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
1e040 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1e050 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d  n, IntPtr stmt).
1e060 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
1e070 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
1e080 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1e090 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
1e0b0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1e0c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1e0d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e0e0 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20       this.cnn = 
1e0f0 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  cnn;..          
1e100 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1e110 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  stmt);..        
1e120 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1e130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e180 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1e190 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61  rivate SQLiteSta
1e1a0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a  tementHandle()..
1e1b0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
1e1c0 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
1e1d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1e1e0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1e1f0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1e200 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
1e210 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
1e220 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1e230 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1e240 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e290 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1e2a0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
1e2b0 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
1e2c0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
1e2d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e2e0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1e2f0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
1e300 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e310 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1e320 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
1e330 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
1e340 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
1e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e360 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
1e370 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
1e380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e390 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
1e3a0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1e3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e3c0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1e3d0 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  .FinalizeStateme
1e3e0 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e  nt(cnn, localHan
1e3f0 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  dle);....#if !NE
1e400 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1e410 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1e430 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1e440 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e450 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
1e460 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
1e470 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
1e480 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
1e4a0 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
1e4b0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4d0 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
1e4e0 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
1e4f0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
1e500 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1e510 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e520 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1e530 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1e540 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e550 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1e560 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1e570 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1e580 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1e590 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
1e5c0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1e5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e5f0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1e600 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
1e610 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
1e620 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
1e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e640 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
1e650 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1e660 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1e670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e680 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
1e690 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1e6b0 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
1e6c0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
1e6d0 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
1e6e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
1e6f0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1e700 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1e710 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1e720 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
1e730 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1e740 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1e750 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1e760 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1e770 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
1e780 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1e790 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1e7a0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1e7b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
1e7c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
1e7d0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
1e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1e7f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1e800 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e810 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1e820 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
1e830 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
1e840 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1e850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e860 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1e870 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e890 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
1e8a0 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78  atement: {0}, ex
1e8b0 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8d0 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
1e8e0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1e8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e900 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e910 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1e920 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e940 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1e950 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e960 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
1e970 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1e980 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1e990 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e9a0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1e9b0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1e9c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1e9d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1e9f0 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
1ea00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ea10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1ea20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
1ea30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ea40 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
1ea50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1ea60 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
1ea70 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
1ea80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ead0 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
1eae0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
1eaf0 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
1eb00 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
1eb10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1eb20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
1eb30 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
1eb40 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
1eb50 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20  ementCount);..  
1eb60 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1eb70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebc0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1ebd0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
1ebe0 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
1ebf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ec00 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1ec10 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1ec20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ec30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1ec40 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1ec50 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1ec60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ec70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ec80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
1ec90 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
1eca0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1ecb0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ecc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ecd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
1ed30 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
1ed40 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
1ed50 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
1ed60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1ed70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ed80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1ed90 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1eda0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1edd0 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
1ede0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
1edf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ee00 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1ee10 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1ee20 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee70 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1ee80 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ion SQLiteBackup
1ee90 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
1eea0 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
1eeb0 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
1eec0 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
1eed0 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f   SQLite backup o
1eee0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
1eef0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
1ef00 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  ss SQLiteBackupH
1ef10 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
1ef20 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
1ef30 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1ef40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ef50 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
1ef60 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
1ef70 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1ef80 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
1ef90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efe0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1eff0 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
1f000 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1f010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1f020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f060 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f070 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
1f080 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
1f090 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63  IntPtr(SQLiteBac
1f0a0 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70  kupHandle backup
1f0b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1f0c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1f0d0 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ckup != null).. 
1f0e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1f0f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1f100 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f110 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1f120 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f  k (backup.syncRo
1f130 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1f140 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f160 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75      return backu
1f170 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  p.handle;..     
1f180 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1f190 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1f1a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f1b0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1f1c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1f1d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1f220 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
1f230 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
1f240 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
1f250 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
1f260 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20  tPtr backup)..  
1f270 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1f280 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
1f290 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1f2a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f2b0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1f2c0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1f2d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
1f2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f2f0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
1f300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f310 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63     SetHandle(bac
1f320 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kup);..         
1f330 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1f340 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1f350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f390 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1f3a0 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b  ivate SQLiteBack
1f3b0 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  upHandle()..    
1f3c0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
1f3d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1f3e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
1f3f0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1f400 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1f410 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
1f420 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70  DebugData.backup
1f430 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1f440 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f450 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f4a0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
1f4b0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
1f4c0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
1f4d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1f4e0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1f4f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1f500 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f510 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f520 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1f530 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
1f540 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
1f550 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
1f560 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1f570 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
1f580 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
1f590 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
1f5a0 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
1f5b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1f5d0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68  QLiteBase.Finish
1f5e0 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61  Backup(cnn, loca
1f5f0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
1f600 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1f610 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1f620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f630 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1f640 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1f660 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
1f670 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1f680 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6a0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1f6b0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6d0 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
1f6e0 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ackup: {0}", loc
1f6f0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
1f700 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1f710 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1f720 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1f730 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1f740 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f750 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1f760 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1f770 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1f780 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1f790 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
1f7c0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1f7f0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1f800 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
1f810 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
1f820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f830 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
1f840 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
1f850 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f860 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f870 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1f880 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
1f890 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1f8a0 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
1f8b0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
1f8c0 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
1f8d0 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
1f8e0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1f900 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1f910 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1f920 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1f930 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1f940 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1f950 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
1f960 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
1f970 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1f980 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1f990 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
1f9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1f9b0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1f9c0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1f9d0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1f9e0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1f9f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa10 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
1fa20 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
1fa30 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
1fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa50 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1fa60 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1fa70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
1fa90 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20  ishBackup: {0}, 
1faa0 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1fab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fac0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1fad0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1fae0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1faf0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fb00 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1fb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1fb20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fb30 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1fb40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fb50 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1fb60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1fb70 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1fb80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1fba0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1fbb0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1fbc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1fbe0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1fbf0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1fc00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fc10 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1fc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1fc30 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1fc40 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1fc50 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1fc60 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1fc70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcc0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1fcd0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1fce0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1fcf0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1fd00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fd10 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1fd20 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1fd30 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61  ref DebugData.ba
1fd40 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  ckupCount);..   
1fd50 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1fd60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1fdc0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
1fdd0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
1fde0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fdf0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1fe00 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1fe10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fe20 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1fe30 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1fe40 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1fe70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
1fe80 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1fe90 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1fea0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1feb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1fec0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff10 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
1ff20 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
1ff30 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
1ff40 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
1ff50 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1ff60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ff70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1ff80 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1ff90 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1ffa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1ffb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ffc0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
1ffd0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
1ffe0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fff0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
20000 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
20010 0d 0a 7d 0d 0a                                   ..}..