System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 233b2f67dc6eae8d6a878f4315d4256261046386:


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 20 20 20 20 20 20 69 6e 74 65  unt;..      inte
0720: 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20  rnal static int 
0730: 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64  blobCount;..#end
0740: 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  if..      #endre
0750: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
07b0: 20 23 72 65 67 69 6f 6e 20 53 65 74 74 69 6e 67   #region Setting
07c0: 73 20 52 65 61 64 20 43 6f 75 6e 74 73 20 28 44  s Read Counts (D
07d0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29  ebug Build Only)
07e0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
07f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0800: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
0810: 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f   lock is used to
0820: 20 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61   protect the sta
0830: 74 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  tic..      /// <
0840: 73 65 65 20 63 72 65 66 3d 22 73 65 74 74 69 6e  see cref="settin
0850: 67 52 65 61 64 43 6f 75 6e 74 73 22 20 2f 3e 20  gReadCounts" /> 
0860: 66 69 65 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  field...      //
0870: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0880: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0890: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  ic readonly obje
08a0: 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  ct staticSyncRoo
08b0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
08c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f  ////////////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
0920: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0930: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
0940: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
0950: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
0960: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
0970: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
0980: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20   /// settings.  
0990: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
09a0: 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65   is only recorde
09b0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
09c0: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
09d0: 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  / "Debug" build 
09e0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
09f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0a00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0a10: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0a20: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0a30: 74 3e 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f  t> settingReadCo
0a40: 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unts;..#endif.. 
0a50: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
0a60: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
0a70: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
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 2f 2f  ////////////////
0aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ac0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
0ad0: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
0ae0: 68 6f 64 73 0d 0a 23 69 66 20 44 45 42 55 47 0d  hods..#if DEBUG.
0af0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0b00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0b10: 43 72 65 61 74 65 73 20 74 68 65 20 64 69 63 74  Creates the dict
0b20: 69 6f 6e 61 72 79 20 75 73 65 64 20 74 6f 20 73  ionary used to s
0b30: 74 6f 72 65 20 74 68 65 20 72 65 61 64 20 63 6f  tore the read co
0b40: 75 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f 66  unts for each of
0b50: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
0b60: 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
0b70: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20  ation settings. 
0b80: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
0b90: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
0ba0: 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  gging..      ///
0bb0: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0bc0: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
0bd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0be0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
0bf0: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74  static void Init
0c00: 69 61 6c 69 7a 65 53 65 74 74 69 6e 67 52 65 61  ializeSettingRea
0c10: 64 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20 20 20  dCounts()..     
0c20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f   {..          lo
0c30: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
0c40: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
0c50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0c60: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
0c70: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
0c80: 65 20 74 68 65 20 6c 69 73 74 20 6f 66 20 73 74  e the list of st
0c90: 61 74 69 73 74 69 63 73 20 74 68 61 74 20 77 69  atistics that wi
0ca0: 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  ll contain the..
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
0cc0: 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66         number of
0cd0: 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74   times each sett
0ce0: 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65  ing value has be
0cf0: 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  en read...      
0d00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
0d10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
0d20: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
0d30: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
0d40: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74              sett
0d50: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20  ingReadCounts = 
0d60: 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  new Dictionary<s
0d70: 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a  tring, int>();..
0d80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
0d90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0de0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
0df0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0e00: 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72 65 6d        /// Increm
0e10: 65 6e 74 73 20 74 68 65 20 72 65 61 64 20 63 6f  ents the read co
0e20: 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70 65 63  unt for the spec
0e30: 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63 6f  ified runtime co
0e40: 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20  nfiguration..   
0e50: 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 2e 20     /// setting. 
0e60: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
0e70: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
0e80: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
0e90: 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20 20 20  g purposes..    
0ea0: 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20 20 20    /// only...   
0eb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0ec0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
0ed0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
0ee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
0ef0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74  name of the sett
0f00: 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64 2e 0d  ing being read..
0f10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
0f20: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
0f30: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  c static void In
0f40: 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65  crementSettingRe
0f50: 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20  adCount(..      
0f60: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
0f70: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
0f80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
0f90: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
0fa0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
0fb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0fc0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
0fd0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70       // NOTE: Up
0fe0: 64 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20  date statistics 
0ff0: 66 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67  for this setting
1000: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1010: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1020: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1030: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 21  tingReadCounts !
1040: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1050: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1060: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1070: 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  count;....      
1080: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1090: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
10a0: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61  s.TryGetValue(na
10b0: 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d  me, out count)).
10c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10d0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
10e0: 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  ReadCounts[name]
10f0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
1100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1110: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1130: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
1140: 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a  .Add(name, 1);..
1150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1160: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
1170: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1180: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1190: 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  .  }..#endif..  
11a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1200: 0a 20 20 23 72 65 67 69 6f 6e 20 48 65 6c 70 65  .  #region Helpe
1210: 72 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  r Methods Static
1220: 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73   Class..  /// <s
1230: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
1240: 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73 73  his static class
1250: 20 70 72 6f 76 69 64 65 73 20 73 6f 6d 65 20 6d   provides some m
1260: 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20  ethods that are 
1270: 73 68 61 72 65 64 20 62 65 74 77 65 65 6e 20 74  shared between t
1280: 68 65 0d 0a 20 20 2f 2f 2f 20 6e 61 74 69 76 65  he..  /// native
1290: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
12a0: 64 65 72 20 61 6e 64 20 6f 74 68 65 72 20 63 6c  der and other cl
12b0: 61 73 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  asses...  /// </
12c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
12d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
12e0: 73 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 0d  s HelperMethods.
12f0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67  .  {..      #reg
1300: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
1310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1320: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1330: 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73   This lock is us
1340: 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68  ed to protect th
1350: 65 20 73 74 61 74 69 63 20 3c 73 65 65 20 63 72  e static <see cr
1360: 65 66 3d 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 66  ef="isMono" /> f
1370: 69 65 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ield...      ///
1380: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1390: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
13a0: 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  c readonly objec
13b0: 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74  t staticSyncRoot
13c0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
13d0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
1400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
1430: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1440: 2f 2f 2f 20 54 68 69 73 20 74 79 70 65 20 69 73  /// This type is
1450: 20 6f 6e 6c 79 20 70 72 65 73 65 6e 74 20 77 68   only present wh
1460: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  en running on Mo
1470: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
1480: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1490: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
14a0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
14b0: 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 20  MonoRuntimeType 
14c0: 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74 69 6d 65 22  = "Mono.Runtime"
14d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1540: 20 2f 2f 2f 20 4b 65 65 70 73 20 74 72 61 63 6b   /// Keeps track
1550: 20 6f 66 20 77 68 65 74 68 65 72 20 77 65 20 61   of whether we a
1560: 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  re running on Mo
1570: 6e 6f 2e 20 20 49 6e 69 74 69 61 6c 6c 79 20 6e  no.  Initially n
1580: 75 6c 6c 2c 20 69 74 20 69 73 0d 0a 20 20 20 20  ull, it is..    
1590: 20 20 2f 2f 2f 20 73 65 74 20 62 79 20 74 68 65    /// set by the
15a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73 4d 6f   <see cref="IsMo
15b0: 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e  no" /> method on
15c0: 20 69 74 73 20 66 69 72 73 74 20 63 61 6c 6c 2e   its first call.
15d0: 20 20 4c 61 74 65 72 2c 20 69 74 0d 0a 20 20 20    Later, it..   
15e0: 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75 72 6e     /// is return
15f0: 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20 74  ed verbatim by t
1600: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73  he <see cref="Is
1610: 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Mono" /> method.
1620: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1630: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
1640: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
1650: 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20 6e 75 6c 6c  l? isMono = null
1660: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
1670: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16d0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
16e0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f  Methods..      /
16f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1700: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
1710: 65 73 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  es whether or no
1720: 74 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  t this assembly 
1730: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f  is running on Mo
1740: 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  no...      /// <
1750: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1760: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1770: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
1780: 72 6f 20 69 66 20 74 68 69 73 20 61 73 73 65 6d  ro if this assem
1790: 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f  bly is running o
17a0: 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f  n Mono...      /
17b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17c0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
17d0: 74 69 63 20 62 6f 6f 6c 20 49 73 4d 6f 6e 6f 28  tic bool IsMono(
17e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
17f0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1800: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1810: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
1820: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
1830: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 69 66 20 28 69 73 4d 6f 6e 6f 20 3d 3d 20 6e 75  if (isMono == nu
1860: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1870: 20 20 20 20 20 20 20 20 20 20 20 69 73 4d 6f 6e             isMon
1880: 6f 20 3d 20 28 54 79 70 65 2e 47 65 74 54 79 70  o = (Type.GetTyp
1890: 65 28 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70  e(MonoRuntimeTyp
18a0: 65 29 20 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  e) != null);....
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 69    return (bool)i
18d0: 73 4d 6f 6e 6f 3b 0d 0a 20 20 20 20 20 20 20 20  sMono;..        
18e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1900: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1910: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1920: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
1930: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1940: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
1950: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
1960: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
1970: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19d0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
19e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
19f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1a00: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
1a10: 6e 65 73 20 69 66 20 74 68 65 20 63 75 72 72 65  nes if the curre
1a20: 6e 74 20 70 72 6f 63 65 73 73 20 69 73 20 72 75  nt process is ru
1a30: 6e 6e 69 6e 67 20 6f 6e 20 6f 6e 65 20 6f 66 20  nning on one of 
1a40: 74 68 65 20 57 69 6e 64 6f 77 73 0d 0a 20 20 20  the Windows..   
1a50: 20 20 20 2f 2f 2f 20 5b 73 75 62 2d 5d 70 6c 61     /// [sub-]pla
1a60: 74 66 6f 72 6d 73 2e 0d 0a 20 20 20 20 20 20 2f  tforms...      /
1a70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a80: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1a90: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
1aa0: 6e 2d 7a 65 72 6f 20 77 68 65 6e 20 72 75 6e 6e  n-zero when runn
1ab0: 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 3b 20  ing on Windows; 
1ac0: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
1ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
1ae0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
1af0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
1b00: 6f 6c 20 49 73 57 69 6e 64 6f 77 73 28 29 0d 0a  ol IsWindows()..
1b10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b20: 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c     PlatformID pl
1b30: 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72  atformId = Envir
1b40: 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e  onment.OSVersion
1b50: 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20  .Platform;....  
1b60: 20 20 20 20 20 20 20 20 69 66 20 28 28 70 6c 61          if ((pla
1b70: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
1b80: 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c  ormID.Win32S) ||
1b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ba0: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
1bb0: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57  latformID.Win32W
1bc0: 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20  indows) ||..    
1bd0: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
1be0: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
1bf0: 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d  mID.Win32NT) ||.
1c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
1c10: 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c  platformId == Pl
1c20: 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29  atformID.WinCE))
1c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c50: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
1c60: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c70: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1c80: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
1c90: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1ce0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1cf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
1d00: 69 73 20 69 73 20 61 20 77 72 61 70 70 65 72 20  is is a wrapper 
1d10: 61 72 6f 75 6e 64 20 74 68 65 0d 0a 20 20 20 20  around the..    
1d20: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1d30: 22 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 49  "String.Format(I
1d40: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 2c 53  FormatProvider,S
1d50: 74 72 69 6e 67 2c 4f 62 6a 65 63 74 5b 5d 29 22  tring,Object[])"
1d60: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1d70: 20 20 20 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20     /// On Mono, 
1d80: 69 74 20 68 61 73 20 74 6f 20 63 61 6c 6c 20 74  it has to call t
1d90: 68 65 20 6d 65 74 68 6f 64 20 6f 76 65 72 6c 6f  he method overlo
1da0: 61 64 20 77 69 74 68 6f 75 74 20 74 68 65 0d 0a  ad without the..
1db0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1dc0: 72 65 66 3d 22 49 46 6f 72 6d 61 74 50 72 6f 76  ref="IFormatProv
1dd0: 69 64 65 72 22 20 2f 3e 20 70 61 72 61 6d 65 74  ider" /> paramet
1de0: 65 72 2c 20 64 75 65 20 74 6f 20 61 20 62 75 67  er, due to a bug
1df0: 20 69 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20   in Mono...     
1e00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1e20: 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65 72  m name="provider
1e30: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
1e40: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 63  is is used for c
1e50: 75 6c 74 75 72 65 2d 73 70 65 63 69 66 69 63 20  ulture-specific 
1e60: 66 6f 72 6d 61 74 74 69 6e 67 2e 0d 0a 20 20 20  formatting...   
1e70: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1e90: 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e  m name="format">
1ea0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1eb0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 0d 0a  format string...
1ec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ed0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
1ee0: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 73 22  aram name="args"
1ef0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  >..      /// An 
1f00: 61 72 72 61 79 20 74 68 65 20 6f 62 6a 65 63 74  array the object
1f10: 73 20 74 6f 20 66 6f 72 6d 61 74 2e 0d 0a 20 20  s to format...  
1f20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1f40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1f50: 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73   The resulting s
1f60: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tring...      //
1f70: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1f80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f90: 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e  tic string Strin
1fa0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1fb0: 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69      IFormatProvi
1fc0: 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d 0a 20  der provider,.. 
1fd0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1fe0: 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  format,..       
1ff0: 20 20 20 70 61 72 61 6d 73 20 6f 62 6a 65 63 74     params object
2000: 5b 5d 20 61 72 67 73 0d 0a 20 20 20 20 20 20 20  [] args..       
2010: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
2020: 20 20 20 20 20 20 20 20 20 69 66 20 28 49 73 4d           if (IsM
2030: 6f 6e 6f 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ono())..        
2040: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
2050: 69 6e 67 2e 46 6f 72 6d 61 74 28 66 6f 72 6d 61  ing.Format(forma
2060: 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20 20 20  t, args);..     
2070: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
2080: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2090: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 70 72  String.Format(pr
20a0: 6f 76 69 64 65 72 2c 20 66 6f 72 6d 61 74 2c 20  ovider, format, 
20b0: 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  args);..      }.
20c0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
20d0: 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
20e0: 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
2140: 67 69 6f 6e 20 4e 61 74 69 76 65 20 4c 69 62 72  gion Native Libr
2150: 61 72 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73  ary Helper Class
2160: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
2170: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74  >..  /// This st
2180: 61 74 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69  atic class provi
2190: 64 65 73 20 61 20 74 68 69 6e 20 77 72 61 70 70  des a thin wrapp
21a0: 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 6e 61  er around the na
21b0: 74 69 76 65 20 6c 69 62 72 61 72 79 0d 0a 20 20  tive library..  
21c0: 2f 2f 2f 20 6c 6f 61 64 69 6e 67 20 66 65 61 74  /// loading feat
21d0: 75 72 65 73 20 6f 66 20 74 68 65 20 75 6e 64 65  ures of the unde
21e0: 72 6c 79 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e  rlying platform.
21f0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
2200: 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  y>..  internal s
2210: 74 61 74 69 63 20 63 6c 61 73 73 20 4e 61 74 69  tatic class Nati
2220: 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65 72 0d  veLibraryHelper.
2230: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67  .  {..      #reg
2240: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 65 6c 65  ion Private Dele
2250: 67 61 74 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  gates..      ///
2260: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2270: 20 20 2f 2f 2f 20 54 68 69 73 20 64 65 6c 65 67    /// This deleg
2280: 61 74 65 20 69 73 20 75 73 65 64 20 74 6f 20 77  ate is used to w
2290: 72 61 70 20 74 68 65 20 63 6f 6e 63 65 70 74 20  rap the concept 
22a0: 6f 66 20 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74  of loading a nat
22b0: 69 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c  ive..      /// l
22c0: 69 62 72 61 72 79 2c 20 62 61 73 65 64 20 6f 6e  ibrary, based on
22d0: 20 61 20 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e   a file name, an
22e0: 64 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  d returning the 
22f0: 6c 6f 61 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20  loaded module.. 
2300: 20 20 20 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e       /// handle.
2310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2320: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2330: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
2340: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
2350: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
2360: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
2370: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
2380: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
2390: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
23a0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
23b0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
23c0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
23d0: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
23e0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
23f0: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
2400: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2410: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 64 65        private de
2420: 6c 65 67 61 74 65 20 49 6e 74 50 74 72 20 4c 6f  legate IntPtr Lo
2430: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
2440: 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  k(..          st
2450: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
2460: 20 20 20 20 20 29 3b 0d 0a 20 20 20 20 20 20 23       );..      #
2470: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2480: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
24e0: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
24f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2500: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
2510: 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
2520: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
2530: 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ive library file
2540: 20 75 73 69 6e 67 20 74 68 65 20 57 69 6e 33 32   using the Win32
2550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e  ..      /// API.
2560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2570: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2580: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
2590: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
25a0: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
25b0: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
25c0: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
25d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
25e0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
25f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2600: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
2610: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
2620: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
2630: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
2640: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
2650: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2660: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2670: 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64  atic IntPtr Load
2680: 4c 69 62 72 61 72 79 57 69 6e 33 32 28 0d 0a 20  LibraryWin32(.. 
2690: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
26a0: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
26b0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
26c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26d0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
26e0: 68 6f 64 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69  hodsWin32.LoadLi
26f0: 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b  brary(fileName);
2700: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
2710: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2760: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2770: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2780: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2790: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
27a0: 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20  ttempts to load 
27b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
27c0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c  tive library fil
27d0: 65 20 75 73 69 6e 67 20 74 68 65 20 50 4f 53 49  e using the POSI
27e0: 58 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49  X..      /// API
27f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
2800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2810: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2820: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
2830: 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e    /// The file n
2840: 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76  ame of the nativ
2850: 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61  e library to loa
2860: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
2870: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2880: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2890: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
28a0: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
28b0: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
28c0: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
28d0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
28e0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
28f0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
2900: 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61  tatic IntPtr Loa
2910: 64 4c 69 62 72 61 72 79 50 6f 73 69 78 28 0d 0a  dLibraryPosix(..
2920: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2930: 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
2940: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
2950: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
2960: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
2970: 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65  thodsPosix.dlope
2980: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2990: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61    fileName, Unsa
29a0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50  feNativeMethodsP
29b0: 6f 73 69 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c  osix.RTLD_DEFAUL
29c0: 54 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  T);..      }..#e
29d0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
29e0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a40: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
2a50: 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  c Methods..     
2a60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2a70: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
2a80: 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 73  ts to load the s
2a90: 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
2aa0: 6c 69 62 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20  library file... 
2ab0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2ac0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2ad0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
2ae0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
2af0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
2b00: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
2b10: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
2b20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2b30: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
2b40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
2b50: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
2b60: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
2b70: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
2b80: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
2b90: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
2ba0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2bb0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2bc0: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
2bd0: 61 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ary(..          
2be0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
2bf0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
2c00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c10: 20 4c 6f 61 64 4c 69 62 72 61 72 79 43 61 6c 6c   LoadLibraryCall
2c20: 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20  back callback = 
2c30: 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33 32  LoadLibraryWin32
2c40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
2c50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2c60: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ORK..          i
2c70: 66 20 28 21 48 65 6c 70 65 72 4d 65 74 68 6f 64  f (!HelperMethod
2c80: 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a  s.IsWindows())..
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2ca0: 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62  llback = LoadLib
2cb0: 72 61 72 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64  raryPosix;..#end
2cc0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
2cd0: 72 65 74 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28  return callback(
2ce0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  fileName);..    
2cf0: 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
2d00: 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
2d10: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
2d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d70: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
2d80: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
2d90: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
2da0: 28 50 4f 53 49 58 29 0d 0a 23 69 66 20 21 50 4c  (POSIX)..#if !PL
2db0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2dc0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c  AMEWORK..  /// <
2dd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
2de0: 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61  This class decla
2df0: 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  res P/Invoke met
2e00: 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74  hods to call nat
2e10: 69 76 65 20 50 4f 53 49 58 20 41 50 49 73 2e 0d  ive POSIX APIs..
2e20: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
2e30: 3e 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  >..  [SuppressUn
2e40: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
2e50: 69 74 79 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ity]..  internal
2e60: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e   static class Un
2e70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e80: 73 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20  sPosix..  {..   
2e90: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
2ee0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ef0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
2f00: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
2f10: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
2f20: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 55  aps the native U
2f30: 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20  nix dlopen..    
2f40: 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20    /// function. 
2f50: 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20 64   See the POSIX d
2f60: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
2f70: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
2f80: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
2f90: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
2fa0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2fb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
2fc0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
2fd0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2fe0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78  e name of the ex
2ff0: 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79  ecutable library
3000: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
3010: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
3020: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
3030: 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  de">..      /// 
3040: 54 68 69 73 20 6d 75 73 74 20 62 65 20 61 20 63  This must be a c
3050: 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68  ombination of th
3060: 65 20 69 6e 64 69 76 69 64 75 61 6c 20 62 69 74  e individual bit
3070: 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59   flags RTLD_LAZY
3080: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c  ,..      /// RTL
3090: 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42  D_NOW, RTLD_GLOB
30a0: 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f  AL, and/or RTLD_
30b0: 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f  LOCAL...      //
30c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
30d0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
30e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
30f0: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
3100: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
3110: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
3120: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
3130: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
3140: 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  ns>..      [DllI
3150: 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61  mport("__Interna
3160: 6c 22 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  l", EntryPoint =
3170: 20 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20   "dlopen",..    
3180: 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e        CallingCon
3190: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
31a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
31b0: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
31c0: 72 53 65 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20  rSet.Ansi,..    
31d0: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
31e0: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
31f0: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
3200: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20  har = true,..   
3210: 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72         SetLastEr
3220: 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20  ror = true)]..  
3230: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
3240: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
3250: 72 20 64 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20  r dlopen(string 
3260: 66 69 6c 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f  fileName, int mo
3270: 64 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  de);....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
32d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
32e0: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
32f0: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62  with dlopen(), b
3300: 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  ind function cal
3310: 6c 73 20 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20  ls lazily...    
3320: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3330: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
3340: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
3350: 4c 41 5a 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20  LAZY = 0x1;.... 
3360: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
33c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
33d0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
33e0: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
33f0: 69 6f 6e 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69  ion calls immedi
3400: 61 74 65 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ately...      //
3410: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3420: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
3430: 73 74 20 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20  st int RTLD_NOW 
3440: 3d 20 30 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20  = 0x2;....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
34a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
34b0: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
34c0: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
34d0: 20 6d 61 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c   make symbols gl
34e0: 6f 62 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65  obally available
34f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
3500: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
3510: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
3520: 74 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20  t RTLD_GLOBAL = 
3530: 30 78 31 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  0x100;....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3590: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35a0: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73        /// For us
35b0: 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c  e with dlopen(),
35c0: 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 52 54 4c   opposite of RTL
35d0: 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68  D_GLOBAL, and th
35e0: 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20  e default...    
35f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3600: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
3610: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
3620: 4c 4f 43 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a  LOCAL = 0x000;..
3630: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
3660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3680: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
3690: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
36a0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
36b0: 6c 6f 70 65 6e 28 29 2c 20 74 68 65 20 64 65 66  lopen(), the def
36c0: 61 75 6c 74 73 20 75 73 65 64 20 62 79 20 74 68  aults used by th
36d0: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
36e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
36f0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
3700: 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f   const int RTLD_
3710: 44 45 46 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e  DEFAULT = RTLD_N
3720: 4f 57 20 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c  OW | RTLD_GLOBAL
3730: 3b 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  ;..  }..#endif..
3740: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
3750: 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
3780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37a0: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
37b0: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
37c0: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
37d0: 61 73 73 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f  ass (Win32)..  /
37e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
37f0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 64  /// This class d
3800: 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65  eclares P/Invoke
3810: 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c   methods to call
3820: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 41 50   native Win32 AP
3830: 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  Is...  /// </sum
3840: 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54  mary>..#if !PLAT
3850: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
3860: 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65  EWORK..  [Suppre
3870: 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53  ssUnmanagedCodeS
3880: 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66  ecurity]..#endif
3890: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
38a0: 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65  tic class Unsafe
38b0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
38c0: 33 32 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  32..  {..      /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3920: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3930: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
3940: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
3950: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
3960: 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32  the native Win32
3970: 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a 20 20   LoadLibrary..  
3980: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
3990: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
39a0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
39b0: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
39c0: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
39d0: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
39e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
39f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
3a00: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
3a10: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
3a20: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
3a30: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
3a40: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
3a50: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
3a60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
3a70: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
3a80: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
3a90: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
3aa0: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
3ab0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
3ac0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3ad0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
3ae0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
3af0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
3b00: 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23  t("kernel32",..#
3b10: 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  else..      [Dll
3b20: 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22  Import("coredll"
3b30: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c  ,..#endif.. Call
3b40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
3b50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3b60: 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72 53 65  n.Winapi, CharSe
3b70: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
3b80: 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ,..#if !PLATFORM
3b90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3ba0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  K..          Bes
3bb0: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
3bc0: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
3bd0: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
3be0: 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e,..#endif..    
3bf0: 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72        SetLastErr
3c00: 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20  or = true)]..   
3c10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
3c20: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
3c30: 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73 74 72   LoadLibrary(str
3c40: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ing fileName);..
3c50: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
3cb0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
3cc0: 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
3cd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
3ce0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
3cf0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
3d00: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
3d10: 74 69 76 65 20 57 69 6e 33 32 20 47 65 74 53 79  tive Win32 GetSy
3d20: 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20  stemInfo..      
3d30: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
3d40: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
3d50: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
3d60: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
3d70: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
3d80: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
3d90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3da0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3db0: 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22  ame="systemInfo"
3dc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
3dd0: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
3de0: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 20 74 6f  ion structure to
3df0: 20 62 65 20 66 69 6c 6c 65 64 20 69 6e 20 62 79   be filled in by
3e00: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a   the function...
3e10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3e20: 6d 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  m>..      [DllIm
3e30: 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20  port("coredll", 
3e40: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3e50: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
3e60: 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a  ntion.Winapi)]..
3e70: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
3e80: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
3e90: 64 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28  d GetSystemInfo(
3ea0: 6f 75 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20  out SYSTEM_INFO 
3eb0: 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a  systemInfo);....
3ec0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3f10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3f20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3f30: 54 68 69 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e  This enumeration
3f40: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 6f   contains the po
3f50: 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f  ssible values fo
3f60: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d  r the processor.
3f70: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69  .      /// archi
3f80: 74 65 63 74 75 72 65 20 66 69 65 6c 64 20 6f 66  tecture field of
3f90: 20 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   the system info
3fa0: 72 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72  rmation structur
3fb0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
3fc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3fd0: 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72  internal enum Pr
3fe0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3ff0: 75 72 65 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20  ure : ushort /* 
4000: 43 4f 4d 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a  COMPAT: Win32. *
4010: 2f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  /..      {..    
4020: 20 20 20 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c        Intel = 0,
4030: 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 49 50 53  ..          MIPS
4040: 20 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 1,..         
4050: 20 41 6c 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20   Alpha = 2,..   
4060: 20 20 20 20 20 20 20 50 6f 77 65 72 50 43 20 3d         PowerPC =
4070: 20 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53   3,..          S
4080: 48 78 20 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20  Hx = 4,..       
4090: 20 20 20 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20     ARM = 5,..   
40a0: 20 20 20 20 20 20 20 49 41 36 34 20 3d 20 36 2c         IA64 = 6,
40b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68  ..          Alph
40c0: 61 36 34 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20  a64 = 7,..      
40d0: 20 20 20 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20      MSIL = 8,.. 
40e0: 20 20 20 20 20 20 20 20 20 41 4d 44 36 34 20 3d           AMD64 =
40f0: 20 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49   9,..          I
4100: 41 33 32 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31  A32_on_Win64 = 1
4110: 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 55 6e  0,..          Un
4120: 6b 6e 6f 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a  known = 0xFFFF..
4130: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4140: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
4190: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
41a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
41b0: 73 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69  structure contai
41c0: 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  ns information a
41d0: 62 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74  bout the current
41e0: 20 63 6f 6d 70 75 74 65 72 2e 20 54 68 69 73 0d   computer. This.
41f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75  .      /// inclu
4200: 64 65 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f  des the processo
4210: 72 20 74 79 70 65 2c 20 70 61 67 65 20 73 69 7a  r type, page siz
4220: 65 2c 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73  e, memory addres
4230: 73 65 73 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20  ses, etc...     
4240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4250: 0a 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61  .      [StructLa
4260: 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
4270: 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
4280: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
4290: 75 63 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d  uct SYSTEM_INFO.
42a0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
42b0: 20 20 20 20 70 75 62 6c 69 63 20 50 72 6f 63 65      public Proce
42c0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
42d0: 20 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69   wProcessorArchi
42e0: 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20  tecture;..      
42f0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
4300: 74 20 77 52 65 73 65 72 76 65 64 3b 20 2f 2a 20  t wReserved; /* 
4310: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
4320: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
4330: 6e 74 20 64 77 50 61 67 65 53 69 7a 65 3b 20 2f  nt dwPageSize; /
4340: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4350: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
4360: 49 6e 74 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d  IntPtr lpMinimum
4370: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
4380: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
4390: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
43a0: 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 61  blic IntPtr lpMa
43b0: 78 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e  ximumApplication
43c0: 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20  Address; /* NOT 
43d0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
43e0: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
43f0: 77 41 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72  wActiveProcessor
4400: 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Mask; /* NOT USE
4410: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
4420: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 4e 75  public uint dwNu
4430: 6d 62 65 72 4f 66 50 72 6f 63 65 73 73 6f 72 73  mberOfProcessors
4440: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
4450: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
4460: 69 63 20 75 69 6e 74 20 64 77 50 72 6f 63 65 73  ic uint dwProces
4470: 73 6f 72 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20  sorType; /* NOT 
4480: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
4490: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
44a0: 77 41 6c 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75  wAllocationGranu
44b0: 6c 61 72 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55  larity; /* NOT U
44c0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
44d0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
44e0: 77 50 72 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b  wProcessorLevel;
44f0: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
4500: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
4510: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
4520: 73 6f 72 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20  sorRevision; /* 
4530: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
4540: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
4550: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
4560: 0a 0d 0a 20 20 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 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
45c0: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
45d0: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
45e0: 20 43 6c 61 73 73 20 28 53 51 4c 69 74 65 29 0d   Class (SQLite).
45f0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
4600: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
4610: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
4620: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
4630: 63 61 6c 6c 20 6e 61 74 69 76 65 20 53 51 4c 69  call native SQLi
4640: 74 65 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20  te APIs...  /// 
4650: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
4660: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
4670: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53  TFRAMEWORK..  [S
4680: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
4690: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
46a0: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
46b0: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
46c0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
46d0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
46e0: 72 65 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61  region Shared Na
46f0: 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72  tive SQLite Libr
4700: 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20  ary Pre-Loading 
4710: 43 6f 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67  Code..      #reg
4720: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
4730: 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  tants..      ///
4740: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4750: 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65    /// The file e
4760: 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f  xtension used fo
4770: 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  r dynamic link l
4780: 69 62 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20  ibraries...     
4790: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
47a0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
47b0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
47c0: 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74  tring DllFileExt
47d0: 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b  ension = ".dll";
47e0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
4810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4830: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
4840: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4850: 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74  /// The file ext
4860: 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20  ension used for 
4870: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
4880: 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20  ation file...   
4890: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
48a0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
48b0: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
48c0: 20 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69   string ConfigFi
48d0: 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e  leExtension = ".
48e0: 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20  config";....    
48f0: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
4940: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4950: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4960: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
4970: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
4980: 61 74 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69  ation file speci
4990: 66 69 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  fic to the..    
49a0: 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74    /// System.Dat
49b0: 61 2e 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c  a.SQLite assembl
49c0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
49d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
49e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
49f0: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58  eadonly string X
4a00: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
4a10: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79   =..          ty
4a20: 70 65 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76  peof(UnsafeNativ
4a30: 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70  eMethods).Namesp
4a40: 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74  ace + DllFileExt
4a50: 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20  ension +..      
4a60: 20 20 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78      ConfigFileEx
4a70: 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  tension;..      
4a80: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
4a90: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
4ae0: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
4af0: 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
4b00: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4b10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4b20: 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f   lock is used to
4b30: 20 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61   protect the sta
4b40: 74 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  tic _SQLiteNativ
4b50: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
4b60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c  ..      /// _SQL
4b70: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
4b80: 61 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65  andle, and proce
4b90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
4ba0: 50 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73  Platforms fields
4bb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
4bc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
4bd0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
4be0: 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74  adonly object st
4bf0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e  aticSyncRoot = n
4c00: 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a  ew object();....
4c10: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4c60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
4c70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4c80: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
4c90: 73 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69  stores the mappi
4ca0: 6e 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63  ngs between proc
4cb0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
4cc0: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  re..      /// na
4cd0: 6d 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d  mes and platform
4ce0: 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d   names.  These m
4cf0: 61 70 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20  appings are now 
4d00: 75 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20  used for two..  
4d10: 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73      /// purposes
4d20: 2e 20 20 46 69 72 73 74 2c 20 74 68 65 79 20 61  .  First, they a
4d30: 72 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72  re used to deter
4d40: 6d 69 6e 65 20 69 66 20 74 68 65 20 61 73 73 65  mine if the asse
4d50: 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20  mbly code..     
4d60: 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64   /// base should
4d70: 20 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64   be used instead
4d80: 20 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e   of the location
4d90: 2c 20 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65  , based upon whe
4da0: 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20  ther one..      
4db0: 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74  /// or more of t
4dc0: 68 65 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72  he named sub-dir
4dd0: 65 63 74 6f 72 69 65 73 20 65 78 69 73 74 20 77  ectories exist w
4de0: 69 74 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62  ithin the assemb
4df0: 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ly code..      /
4e00: 2f 2f 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64  // base.  Second
4e10: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
4e20: 74 6f 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61  to assist in loa
4e30: 64 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72  ding the appropr
4e40: 69 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  iate..      /// 
4e50: 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
4e60: 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65  ssembly into the
4e70: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
4e80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
4e90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
4ea0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69  rivate static Di
4eb0: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
4ec0: 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73   string> process
4ed0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
4ee0: 61 74 66 6f 72 6d 73 3b 0d 0a 20 20 20 20 20 20  atforms;..      
4ef0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
4f00: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4f50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4f60: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
4f70: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
4f80: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
4f90: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
4fa0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
4fb0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4fc0: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
4fd0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
4fe0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
4ff0: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
5000: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
5010: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5060: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5070: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
5080: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
5090: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
50a0: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
50b0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
50c0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
50d0: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
50e0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
50f0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
5100: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
5110: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5120: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
5130: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
5140: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
5150: 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f    {..#if SQLITE_
5160: 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
5170: 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
5180: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5190: 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52  RAMEWORK..#if PR
51a0: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
51b0: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20  RARY..          
51c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
51d0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e   NOTE: If the "N
51e0: 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22  o_PreLoadSQLite"
51f0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
5200: 69 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f  iable is set (to
5210: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
5220: 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20       anything), 
5230: 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70 65  skip all our spe
5240: 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69  cial code and si
5250: 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20  mply return...  
5260: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5270: 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
5280: 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72  tingValue("No_Pr
5290: 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75  eLoadSQLite", nu
52a0: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
52c0: 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  rn;..#endif..#en
52d0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
52e0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
52f0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
5300: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
5310: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
5320: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
5330: 65 20 6c 69 73 74 20 6f 66 20 73 74 61 74 69 73  e list of statis
5340: 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63  tics that will c
5350: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
5360: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e        //       n
5370: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65  umber of times e
5380: 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75  ach setting valu
5390: 65 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e  e has been read.
53a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
53b0: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
53c0: 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65 53 65  ata.InitializeSe
53d0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 28  ttingReadCounts(
53e0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
53f0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5400: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
5410: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
5420: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
5430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5440: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5450: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
5460: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
5470: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
5480: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
5490: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
54a0: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
54b0: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
54c0: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
54d0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
54e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
54f0: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
5500: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5510: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
5520: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5530: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
5540: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5550: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5560: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5580: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
5590: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
55a0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
55b0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
55c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
55d0: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
55e0: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
55f0: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
5600: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
5610: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
5620: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
5630: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
5640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5650: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
5660: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
5670: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
5680: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
5690: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
56a0: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
56b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56c0: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
56d0: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
56e0: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
56f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5710: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
5720: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
5730: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
5740: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5760: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
5770: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
5780: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
5790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
57a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
57b0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
57c0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
57d0: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
57e0: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5800: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5810: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
5820: 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36  Add("AMD64", "x6
5830: 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4");..          
5840: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
5850: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
5860: 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34  tforms.Add("IA64
5870: 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a  ", "Itanium");..
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
58a0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
58b0: 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e  .Add("ARM", "Win
58c0: 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  CE");..         
58d0: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51       }....#if SQ
58e0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
58f0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
5900: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
5910: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
5920: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
5930: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
5940: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5950: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
5960: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
5970: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
5980: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
5990: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
59b0: 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  (_SQLiteNativeMo
59c0: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e  duleHandle == In
59d0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
59e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
59f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5a00: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
5a10: 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5a30: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
5a40: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75  rchitecture = nu
5a50: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
5a60: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
5a70: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
5a80: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
5a90: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ab0: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
5ac0: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
5ad0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5ae0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
5af0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5b10: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
5b20: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
5b30: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
5b40: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
5b50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5b60: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
5b70: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
5b80: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
5b90: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
5ba0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
5bb0: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
5bc0: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
5bd0: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c00: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
5c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5c20: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
5c30: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
5c50: 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65  Directory, proce
5c60: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
5c70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5c80: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
5c90: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
5ca0: 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
5cd0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b  veModuleHandle);
5ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5cf0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
5d00: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
5d10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
5d20: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5d70: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5d80: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69  .      /// Combi
5d90: 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74 72  nes two path str
5da0: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
5db0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5dc0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5dd0: 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20  me="path1">..   
5de0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74     /// The first
5df0: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
5e00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
5e10: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5e20: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
5e30: 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h2">..      /// 
5e40: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20  The second path 
5e50: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
5e60: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5e70: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
5e80: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
5e90: 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68  he combined path
5ea0: 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c   string -OR- nul
5eb0: 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65  l if both of the
5ec0: 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a   original path..
5ed0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
5ee0: 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  s are null...   
5ef0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5f00: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
5f10: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d   static string M
5f20: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
5f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
5f40: 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20  ng path1,..     
5f50: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
5f60: 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  2..          )..
5f70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5f80: 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d 20     if (path1 != 
5f90: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5fa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5fb0: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
5fc0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5fd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
5fe0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68  ath.Combine(path
5ff0: 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20  1, path2);..    
6000: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
6010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6020: 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d    return path1;.
6030: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
6040: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
6050: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6060: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
6070: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6090: 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20  eturn path2;..  
60a0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
60b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
60c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
60d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
60e0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6140: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6150: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
6160: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
6170: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
6180: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ion file name fo
6190: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a  r the assembly..
61a0: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
61b0: 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64  ning the managed
61c0: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
61d0: 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d  ite components..
61e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
61f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6200: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
6210: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
6220: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
6230: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
6240: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
6250: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
6260: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
6270: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
6280: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
6290: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
62a0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 58  atic string GetX
62b0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
62c0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
62d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
62e0: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
62f0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
6300: 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ame;....#if !PLA
6310: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6320: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
6330: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70    directory = Ap
6340: 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
6350: 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
6360: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
6370: 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65  fileName = Maybe
6380: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
6390: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
63a0: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
63b0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
63c0: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
63d0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
63e0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
63f0: 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
6400: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
6410: 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
6420: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
6430: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
6440: 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
6450: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d  th(directory, Xm
6460: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
6470: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
6480: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
6490: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
64a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
64b0: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  fileName;....   
64c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
64d0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ll;..      }....
64e0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
6510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6530: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6540: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6550: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
6560: 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66  rns the value of
6570: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
6580: 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68  etting, using th
6590: 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f  e XML..      ///
65a0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
65b0: 69 6c 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65  ile and/or the e
65c0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
65d0: 62 6c 65 73 20 66 6f 72 20 74 68 65 20 63 75 72  bles for the cur
65e0: 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rent..      /// 
65f0: 70 72 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74  process and/or t
6600: 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74 65  he current syste
6610: 6d 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c  m, when availabl
6620: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
6630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6640: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6650: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
6660: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
6670: 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20  he setting...   
6680: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6690: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
66a0: 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  m name="default"
66b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
66c0: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
66d0: 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65 74  urned if the set
66e0: 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65  ting has not bee
66f0: 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
6700: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63  ..      /// or c
6710: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
6720: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
6730: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6740: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6750: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
6760: 75 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  ue of the settin
6770: 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75  g -OR- the defau
6780: 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69  lt value specifi
6790: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed by..      ///
67a0: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
67b0: 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20  "default" /> if 
67c0: 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  it has not been 
67d0: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f  set explicitly o
67e0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  r..      /// can
67f0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
6800: 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  d.  By default, 
6810: 61 6c 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74  all references t
6820: 6f 20 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20  o existing..    
6830: 20 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e    /// environmen
6840: 74 20 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c  t variables will
6850: 20 62 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20   be expanded to 
6860: 74 68 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64  their correspond
6870: 69 6e 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  ing values..    
6880: 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65    /// within the
6890: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
68a0: 75 72 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74  urned unless eit
68b0: 68 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61  her the "No_Expa
68c0: 6e 64 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  nd" or..      //
68d0: 2f 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61  / "No_Expand_<pa
68e0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d  ramref name="nam
68f0: 65 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65  e" />" environme
6900: 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73  nt variable is s
6910: 65 74 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  et [to..      //
6920: 2f 20 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20  / anything]...  
6930: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6940: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
6950: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
6960: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
6970: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
6980: 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20  ing name,    /* 
6990: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
69a0: 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
69b0: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
69c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
69d0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e  .          if (n
69e0: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
69f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6a00: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a  rn @default;....
6a10: 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6a60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  ...          #re
6a70: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
6a80: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
6a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
6aa0: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53  gData.IncrementS
6ab0: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28  ettingReadCount(
6ac0: 6e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  name);..#endif..
6ad0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
6ae0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
6af0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6b40: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
6b50: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
6b60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6b70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6b80: 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61         bool expa
6b90: 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  nd = true;....  
6ba0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
6bb0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
6bc0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22  onmentVariable("
6bd0: 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e  No_Expand") != n
6be0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6bf0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6c00: 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
6c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
6c20: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
6c30: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
6c40: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
6c50: 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
6c60: 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d           HelperM
6c70: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
6c80: 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
6c90: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
6ca0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6cb0: 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f       "No_Expand_
6cc0: 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20  {0}", name)) != 
6cd0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6ce0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6cf0: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
6d00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
6d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
6d20: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
6d30: 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
6d40: 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d  riable(name);...
6d50: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65  .          if (e
6d60: 78 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e 67  xpand && !String
6d70: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
6d80: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
6d90: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
6da0: 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
6db0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
6dc0: 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
6dd0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
6de0: 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue != null)..  
6df0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6e00: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6e 64 69  rn value;..#endi
6e10: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  f....          t
6e20: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
6e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
6e40: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
6e50: 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c   GetXmlConfigFil
6e60: 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  eName();....    
6e70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
6e80: 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  leName == null).
6e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ea0: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
6eb0: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
6ec0: 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74       XmlDocument
6ed0: 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20   document = new 
6ee0: 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a  XmlDocument();..
6ef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6f00: 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69  document.Load(fi
6f10: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
6f20: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
6f30: 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64  ment element = d
6f40: 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69  ocument.SelectSi
6f50: 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20  ngleNode(..     
6f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
6f70: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
6f80: 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
6f90: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
6fa0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
6fb0: 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e 66 69           "/confi
6fc0: 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65 74 74  guration/appSett
6fd0: 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b  ings/add[@key='{
6fe0: 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73  0}']", name)) as
6ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7000: 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 0d      XmlElement;.
7010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7020: 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20   if (element != 
7030: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
7040: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7050: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
7060: 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62 75  ement.HasAttribu
7070: 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20 20  te("value"))..  
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7090: 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d      value = elem
70a0: 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74 65  ent.GetAttribute
70b0: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 23 69  ("value");....#i
70c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
70d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
70e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70f0: 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21 53  if (expand && !S
7100: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
7110: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
7120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7130: 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72     value = Envir
7140: 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76  onment.ExpandEnv
7150: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
7160: 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  s(value);..#endi
7170: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
7180: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
7190: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
71a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
71b0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
71c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
71d0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
71e0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
71f0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
7200: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
7210: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
7220: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
7230: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
7240: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
7250: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
7260: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
7270: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
7280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
7290: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
72a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
72b0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
72c0: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
72d0: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
72e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
72f0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
7300: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
7310: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
7320: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
7330: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
7340: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
7350: 20 67 65 74 20 73 65 74 74 69 6e 67 20 22 20 2b   get setting " +
7360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7370: 20 20 20 20 20 20 20 20 22 5c 22 7b 30 7d 5c 22          "\"{0}\"
7380: 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 20 6e 61   value: {1}", na
7390: 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  me, e)); /* thro
73a0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
73b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
73c0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
73d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
73e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
73f0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7410: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7420: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7430: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
7440: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
7450: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
74a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
74b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
74c0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
74d0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 4c 69 73  tatic string Lis
74e0: 74 54 6f 53 74 72 69 6e 67 28 49 4c 69 73 74 3c  tToString(IList<
74f0: 73 74 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a 20  string> list).. 
7500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7510: 20 20 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e 75    if (list == nu
7520: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
7530: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
7540: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72  ...          Str
7550: 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c  ingBuilder resul
7560: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
7570: 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
7580: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
7590: 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69 6e  tring element in
75a0: 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20   list)..        
75b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
75c0: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d     if (element =
75d0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
75e0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
75f0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
7600: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
7610: 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  .Length > 0)..  
7620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7630: 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 27 20  result.Append(' 
7640: 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
7650: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
7660: 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20  nd(element);..  
7670: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7680: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
7690: 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b  sult.ToString();
76a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
76b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7700: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
7710: 61 74 69 63 20 69 6e 74 20 43 68 65 63 6b 46 6f  atic int CheckFo
7720: 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e  rArchitecturesAn
7730: 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20 20  dPlatforms(..   
7740: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
7750: 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
7760: 20 20 20 20 72 65 66 20 4c 69 73 74 3c 73 74 72      ref List<str
7770: 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20 20  ing> matches..  
7780: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
7790: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e   {..          in
77a0: 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d  t result = 0;...
77b0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d  .          if (m
77c0: 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  atches == null).
77d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  .              m
77e0: 61 74 63 68 65 73 20 3d 20 6e 65 77 20 4c 69 73  atches = new Lis
77f0: 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a  t<string>();....
7800: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
7810: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
7820: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7830: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7840: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
7850: 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29  Empty(directory)
7860: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
7870: 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 6f         (processo
7880: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
7890: 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29 29  tforms != null))
78a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
78b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
78c0: 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65       foreach (Ke
78d0: 79 56 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e  yValuePair<strin
78e0: 67 2c 20 73 74 72 69 6e 67 3e 20 70 61 69 72 0d  g, string> pair.
78f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7900: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20               in 
7910: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
7920: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 29 0d  cturePlatforms).
7930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7940: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7950: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7960: 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73  Directory.Exists
7970: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
7980: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 70 61 69  h(directory, pai
7990: 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20 20 20  r.Key)))..      
79a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
79c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
79d0: 63 68 65 73 2e 41 64 64 28 70 61 69 72 2e 4b 65  ches.Add(pair.Ke
79e0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
79f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7a00: 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20  esult++;..      
7a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
7a30: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
7a40: 67 20 76 61 6c 75 65 20 3d 20 70 61 69 72 2e 56  g value = pair.V
7a50: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
7a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7a70: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
7a80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
7aa0: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ac0: 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78  if (Directory.Ex
7ad0: 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e  ists(MaybeCombin
7ae0: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
7af0: 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20   value)))..     
7b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
7b30: 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29  tches.Add(value)
7b40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
7b60: 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ult++;..        
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 20 20 20 20 20  .               
7b90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
7ba0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7bb0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
7bc0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
7bd0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7be0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7c30: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
7c40: 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73  ic bool CheckAss
7c50: 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a  emblyCodeBase(..
7c60: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
7c70: 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20  ly assembly,..  
7c80: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
7c90: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
7ca0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
7cb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
7cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7ce0: 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  (assembly == nul
7cf0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
7d00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
7d10: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
7d20: 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65       string code
7d30: 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Base = assembly.
7d40: 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20  CodeBase;....   
7d50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
7d60: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
7d70: 70 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a  pty(codeBase))..
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d90: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
7da0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7db0: 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55   Uri uri = new U
7dc0: 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20  ri(codeBase);.. 
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
7de0: 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  ing localFileNam
7df0: 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74  e = uri.LocalPat
7e00: 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
7e10: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
7e20: 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61  ists(localFileNa
7e30: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
7e40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
7e50: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
7e60: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
7e70: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
7e80: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
7e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ea0: 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d      localFileNam
7eb0: 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
7ec0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7ed0: 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69   string xmlConfi
7ee0: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62  gFileName = Mayb
7ef0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
7f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f10: 20 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43   directory, XmlC
7f20: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d  onfigFileName);.
7f30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7f40: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
7f50: 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  (xmlConfigFileNa
7f60: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
7f70: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
7f80: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
7f90: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
7fc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fe0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
7ff0: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
8000: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
8010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8020: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
8030: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
8040: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
8050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
8060: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
8070: 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20  re-loader found 
8080: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
8090: 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20  n file " +..    
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80b0: 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20        "via code 
80c0: 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74  base for current
80d0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
80e0: 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c  embly: \"{0}\"",
80f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8100: 20 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43              xmlC
8110: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b  onfigFileName));
8120: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8150: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8180: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
8190: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
81a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
81b0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
81c0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
81d0: 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65   = localFileName
81e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
81f0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
8200: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8210: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
8220: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
8230: 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b   matches = null;
8240: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8250: 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72    if (CheckForAr
8260: 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c  chitecturesAndPl
8270: 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72  atforms(director
8280: 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29 20  y, ref matches) 
8290: 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
82a0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
82b0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
82c0: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82e0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
82f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8310: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
8320: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
8330: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
8360: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
8370: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
8380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
8390: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
83a0: 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20  re-loader found 
83b0: 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72 65 63  native sub-direc
83c0: 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20  tories " +..    
83d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83e0: 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20        "via code 
83f0: 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74  base for current
8400: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
8410: 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c  embly: \"{0}\"",
8420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8430: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74              List
8440: 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73  ToString(matches
8450: 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ))); /* throw */
8460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8470: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
8480: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
84b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
84c0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
84e0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
8500: 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65  Name = localFile
8510: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
8520: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8530: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
8540: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8550: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8560: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
8570: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
8580: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
8590: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
85a0: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
85b0: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
85c0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
85d0: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
85e0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  if..          {.
85f0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
8600: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
8610: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
8620: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8630: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8640: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
8650: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
8660: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
8670: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
8690: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
86a0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86c0: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
86d0: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69  y pre-loader fai
86e0: 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64  led to check cod
86f0: 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20  e base " +..    
8700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8710: 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
8720: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
8730: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
8740: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
8750: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
8770: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8790: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
87a0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
87b0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
87c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
87d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
87e0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
87f0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
8850: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8860: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
8870: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
8880: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
8890: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
88a0: 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20  rently being..  
88b0: 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64      /// executed
88c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
88d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
88e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
88f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65      /// The dire
8900: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
8910: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
8920: 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20   being executed 
8930: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20  -OR- null if..  
8940: 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f      /// it canno
8950: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
8960: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
8970: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
8980: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
8990: 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44  ing GetAssemblyD
89a0: 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
89b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
89c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
89d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41  .              A
89e0: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
89f0: 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
8a00: 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
8a10: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
8a20: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
8a30: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
8a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8a50: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
8a70: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
8a80: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
8a90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8aa0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8ab0: 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
8ac0: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
8ad0: 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
8ae0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
8af0: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
8b00: 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b20: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
8b30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8b40: 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
8b50: 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
8b60: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
8b70: 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65          if (!Che
8b80: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
8b90: 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66  se(assembly, ref
8ba0: 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20   fileName))..   
8bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8bc0: 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
8bd0: 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65  ly.Location;..#e
8be0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
8bf0: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
8c00: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
8c10: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
8c30: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
8c40: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
8c50: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
8c60: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
8c70: 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ame(fileName);..
8c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8c90: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
8ca0: 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
8cb0: 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry))..          
8cc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
8cd0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
8ce0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
8cf0: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
8d00: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
8d10: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
8d20: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
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 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
8d50: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
8d60: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
8d70: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8d80: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
8d90: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
8da0: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
8db0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8dc0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
8de0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
8df0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
8e00: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e20: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
8e30: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
8e60: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
8e70: 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72  ailed to get dir
8e80: 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20  ectory " +..    
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ea0: 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
8eb0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
8ec0: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
8ed0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
8ee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
8f00: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8f10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8f20: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
8f30: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
8f40: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
8f50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8f60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
8f70: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ull;..      }.. 
8f80: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
8f90: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
8fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fe0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
8ff0: 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74  ion Optional Nat
9000: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
9010: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
9020: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  ode..      //.. 
9030: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
9040: 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20   we are looking 
9050: 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61 72 64  for the standard
9060: 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22 73 71   SQLite DLL ("sq
9070: 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20  lite3.dll"),..  
9080: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
9090: 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22 53   interop DLL ("S
90a0: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c  QLite.Interop.dl
90b0: 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65 20 72  l"), or we are r
90c0: 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20  unning on the.. 
90d0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e       //       .N
90e0: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
90f0: 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20  work, we should 
9100: 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63 6f 64  include this cod
9110: 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a  e (only if the..
9120: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66        //       f
9130: 65 61 74 75 72 65 20 68 61 73 20 61 63 74 75 61  eature has actua
9140: 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  lly been enabled
9150: 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20 77 6f  ).  This code wo
9160: 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a  uld be totally..
9170: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
9180: 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68 69 73  edundant if this
9190: 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65 65 6e   module has been
91a0: 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68   bundled into th
91b0: 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20  e mixed-mode..  
91c0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
91d0: 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  embly...      //
91e0: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
91f0: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
9200: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
9210: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9220: 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f  EWORK....      /
9230: 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
9240: 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69  : Only compile i
9250: 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  n the native lib
9260: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f  rary pre-load co
9270: 64 65 20 69 66 20 74 68 65 20 66 65 61 74 75 72  de if the featur
9280: 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
9290: 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61 62 6c    has been enabl
92a0: 65 64 20 66 6f 72 20 74 68 69 73 20 62 75 69 6c  ed for this buil
92b0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  d...      //..#i
92c0: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
92d0: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
92e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
92f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
9300: 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72 6f 6e  e of the environ
9310: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 63 6f  ment variable co
9320: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72 6f  ntaining the pro
9330: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
9340: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  / architecture o
9350: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
9360: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
9370: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9380: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9390: 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69  ic readonly stri
93a0: 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43  ng PROCESSOR_ARC
93b0: 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20 20 20  HITECTURE =..   
93c0: 20 20 20 20 20 20 20 22 50 52 4f 43 45 53 53 4f         "PROCESSO
93d0: 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 22 3b  R_ARCHITECTURE";
93e0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
9440: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
9450: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
9460: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9470: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
9480: 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ule file name fo
9490: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
94a0: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 6e  ite library or n
94b0: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
94c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
94d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
94e0: 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65  c string _SQLite
94f0: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  NativeModuleFile
9500: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
9510: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9570: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9580: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
9590: 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65  e handle for the
95a0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
95b0: 69 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61  ibrary or the va
95c0: 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  lue..      /// I
95d0: 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20  ntPtr.Zero...   
95e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
95f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
9600: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f   static IntPtr _
9610: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
9620: 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74  leHandle = IntPt
9630: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23  r.Zero;..      #
9640: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
9650: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
96a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
96b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
96c0: 65 72 6d 69 6e 65 73 20 74 68 65 20 62 61 73 65  ermines the base
96d0: 20 66 69 6c 65 20 6e 61 6d 65 20 28 77 69 74 68   file name (with
96e0: 6f 75 74 20 61 6e 79 20 64 69 72 65 63 74 6f 72  out any director
96f0: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a  y information)..
9700: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
9710: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
9720: 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72  library to be pr
9730: 65 2d 6c 6f 61 64 65 64 20 62 79 20 74 68 69 73  e-loaded by this
9740: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
9750: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9760: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9770: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
9780: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
9790: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
97a0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
97b0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
97c0: 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  by..      /// th
97d0: 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75  is class -OR- nu
97e0: 6c 6c 20 69 66 20 69 74 73 20 76 61 6c 75 65 20  ll if its value 
97f0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
9800: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
9810: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
9820: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9830: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 61 74  ic string GetNat
9840: 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  iveLibraryFileNa
9850: 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  meOnly()..      
9860: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
9870: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
9880: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
9890: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
98a0: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
98b0: 65 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  e_LibraryFileNam
98c0: 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  eOnly", null);..
98d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
98e0: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20  fileNameOnly != 
98f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9900: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
9910: 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20  NameOnly;....   
9920: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
9930: 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d  LITE_DLL; /* COM
9940: 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  PAT */..      }.
9950: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
9980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
99a0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
99b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
99c0: 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72 20  // Searches for 
99d0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
99e0: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65  e library in the
99f0: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
9a00: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  ining..      ///
9a10: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
9a20: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
9a30: 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61  ecuted as well a
9a40: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
9a50: 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tory..      /// 
9a60: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
9a70: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
9a80: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
9a90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9aa0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9ab0: 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22  ="baseDirectory"
9ac0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  >..      /// Upo
9ad0: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
9ae0: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
9af0: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65  e modified to re
9b00: 66 65 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d  fer to the base.
9b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
9b20: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
9b30: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
9b40: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
9b50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9b60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
9b70: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
9b80: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
9b90: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
9ba0: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
9bb0: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
9bc0: 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
9bd0: 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20   to the name..  
9be0: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69      /// of the i
9bf0: 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63 74 6f  mmediate directo
9c00: 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66  ry (i.e. the off
9c10: 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
9c20: 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20  e directory)..  
9c30: 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69      /// containi
9c40: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
9c50: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
9c60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9c70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
9c80: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
9c90: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63  / Non-zero (succ
9ca0: 65 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69  ess) if the nati
9cb0: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
9cc0: 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68  y was found; oth
9cd0: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
9ce0: 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65  // zero (failure
9cf0: 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  )...      /// </
9d00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9d10: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
9d20: 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72  ool SearchForDir
9d30: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
9d40: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61     ref string ba
9d50: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
9d60: 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
9d70: 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
9d80: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
9d90: 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74  hitecture /* out
9da0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
9db0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
9dc0: 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74       if (GetSett
9dd0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
9de0: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
9df0: 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72  oadSQLite_NoSear
9e00: 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c  chForDirectory",
9e10: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
9e20: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
9e30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9e40: 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53  rn false; /* DIS
9e50: 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  ABLED */..      
9e60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9e70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9e80: 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d   // NOTE: Determ
9e90: 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69 6c  ine the base fil
9ea0: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
9eb0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
9ec0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  rary...         
9ed0: 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 69   //       If thi
9ee0: 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62  s is not known b
9ef0: 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65  y this class, we
9f00: 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65   cannot continue
9f10: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
9f20: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
9f30: 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d  g fileNameOnly =
9f40: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
9f50: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b  yFileNameOnly();
9f60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
9f70: 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d   (fileNameOnly =
9f80: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
9f90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
9fa0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9fb0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9fc0: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
9fd0: 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20  he list of base 
9fe0: 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20  directories and 
9ff0: 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f  processor/platfo
a000: 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  rm..          //
a010: 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54         names.  T
a020: 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20  hese lists will 
a030: 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  be used to help 
a040: 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74 69 76  locate the nativ
a050: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
a060: 20 20 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72        SQLite cor
a070: 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e  e library (or in
a080: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
a090: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f  to pre-load into
a0a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
a0b0: 20 20 20 20 20 74 68 69 73 20 70 72 6f 63 65 73       this proces
a0c0: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  s...          //
a0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
a0e0: 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73  ng[] directories
a0f0: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
a100: 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44      GetAssemblyD
a110: 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66  irectory(),..#if
a120: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a130: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a140: 20 20 20 20 20 20 20 20 20 20 20 41 70 70 44 6f             AppDo
a150: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
a160: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
a170: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
a180: 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20       };....     
a190: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75       string[] su
a1a0: 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b  bDirectories = {
a1b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a1c0: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
a1d0: 69 74 65 63 74 75 72 65 28 29 2c 20 47 65 74 50  itecture(), GetP
a1e0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c  latformName(null
a1f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  )..          };.
a200: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
a210: 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
a220: 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
a230: 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
a240: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a250: 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
a260: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a270: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
a280: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
a290: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
a2a0: 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
a2b0: 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
a2c0: 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
a2d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a2e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a2f0: 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
a300: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
a310: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
a320: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
a330: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a340: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
a350: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
a360: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
a370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a380: 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
a390: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
a3a0: 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
a3b0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
a3c0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
a3d0: 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a3f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a400: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
a410: 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
a420: 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
a430: 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
a440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a450: 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
a460: 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
a470: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
a480: 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
a490: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
a4a0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
a4b0: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
a4c0: 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
a4d0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
a4e0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
a4f0: 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
a500: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
a510: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a520: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a530: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
a540: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
a550: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a570: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
a580: 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20   = directory;.. 
a590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5a0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
a5b0: 63 68 69 74 65 63 74 75 72 65 20 3d 20 73 75 62  chitecture = sub
a5c0: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
a5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5e0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f    return true; /
a5f0: 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20  * FOUND */..    
a600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
a610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
a620: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
a630: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
a640: 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20  n false; /* NOT 
a650: 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
a660: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
a6c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a6d0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
a6e0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73   returns the bas
a6f0: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
a700: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
a710: 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  cation..      //
a720: 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  / domain...     
a730: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a740: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
a750: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
a760: 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
a770: 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ry for the curre
a780: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
a790: 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20  omain -OR- null 
a7a0: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
a7b0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
a7c0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
a7d0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a7e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
a7f0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73  ic string GetBas
a800: 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  eDirectory()..  
a810: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a820: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
a830: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
a840: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
a850: 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  seDirectory" env
a860: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
a870: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
a880: 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73        is set, us
a890: 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f  e it verbatim fo
a8a0: 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  r the base direc
a8b0: 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
a8c0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
a8d0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
a8e0: 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  = GetSettingValu
a8f0: 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e("PreLoadSQLite
a900: 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c  _BaseDirectory",
a910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a920: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
a930: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
a940: 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
a950: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a960: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23   directory;....#
a970: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a980: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a990: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a9a0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
a9b0: 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
a9c0: 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
a9d0: 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69  yDirectory" envi
a9e0: 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
a9f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
aa00: 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20  able is set (to 
aa10: 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20  anything), then 
aa20: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
aa30: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
aa40: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
aa50: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
aa60: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
aa70: 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20  ing assembly..  
aa80: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
aa90: 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61   (i.e. System.Da
aaa0: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
aab0: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
aac0: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ation..         
aad0: 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e   //       domain
aae0: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e   base directory.
aaf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
ab00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65            if (Ge
ab10: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab30: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
ab40: 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65  _UseAssemblyDire
ab50: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
ab60: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ab70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ab80: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
ab90: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
aba0: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
abb0: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
abc0: 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
abd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abe0: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
abf0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ry;..          }
ac00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
ac10: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
ac20: 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20  OTE: Otherwise, 
ac30: 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e  fallback on usin
ac40: 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  g the base direc
ac50: 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20  tory of the..   
ac60: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ac70: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
ac80: 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  ion domain...   
ac90: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
aca0: 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44       return AppD
acb0: 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d  omain.CurrentDom
acc0: 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72  ain.BaseDirector
acd0: 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  y;..#else..     
ace0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
acf0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
ad00: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
ad10: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69 72  on using the dir
ad20: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
ad30: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  g..          // 
ad40: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
ad50: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
ad60: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20  sembly...       
ad70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ad80: 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d   return GetAssem
ad90: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
ada0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
adb0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
ade0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
ae10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ae20: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
ae30: 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  f the dynamic li
ae40: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
ae50: 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20  name requires a 
ae60: 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f  suffix..      //
ae70: 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66  / and adds it if
ae80: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
ae90: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
aea0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
aeb0: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
aec0: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
aed0: 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e  The original dyn
aee0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
aef0: 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69  y file name to i
af00: 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  nspect...      /
af10: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
af20: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
af30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
af40: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
af50: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20  rary file name, 
af60: 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65  possibly modifie
af70: 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d  d to include an.
af80: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e  .      /// exten
af90: 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sion...      ///
afa0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
afb0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
afc0: 63 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c  c string FixUpDl
afd0: 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20  lFileName(..    
afe0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
aff0: 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  eName /* in */..
b000: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b020: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
b030: 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
b040: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
b050: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b060: 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
b070: 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d  ds.IsWindows()).
b080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
b090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b0a0: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
b0b0: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
b0c0: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
b0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b0e0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
b0f0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
b100: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
b110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b120: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b140: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
b150: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
b160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b170: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
b180: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
b190: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
b1a0: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
b1b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
b210: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b220: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
b230: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
b240: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
b250: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
b260: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
b270: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
b280: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b290: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
b2a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
b2b0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
b2c0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
b2d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
b2e0: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
b2f0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
b300: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
b310: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
b320: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
b330: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b340: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
b350: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
b360: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
b370: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b380: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
b390: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
b3a0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
b3b0: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
b3c0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
b3d0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
b3e0: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
b3f0: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
b400: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
b410: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
b420: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
b430: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
b440: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b450: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
b460: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
b470: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
b480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b490: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
b4a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b4b0: 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  ture", null);...
b4c0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
b4d0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b4e0: 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ture != null).. 
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b500: 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  urn processorArc
b510: 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20  hitecture;....  
b520: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b530: 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a        // BUGBUG:
b540: 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79   Will this alway
b550: 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a  s be reliable?..
b560: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b570: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
b580: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
b590: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
b5a0: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
b5b0: 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a  ECTURE, null);..
b5c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
b5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
b620: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b630: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
b640: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
b650: 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20  HACK: Check for 
b660: 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20  an "impossible" 
b670: 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74  situation.  If t
b680: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d  he pointer size.
b690: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
b6a0: 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20      is 32-bits, 
b6b0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
b6c0: 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f  chitecture canno
b6d0: 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20  t be "AMD64"... 
b6e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b6f0: 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20    In that case, 
b700: 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65  we are almost ce
b710: 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20  rtainly hitting 
b720: 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20  a bug in the..  
b730: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b740: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
b750: 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20  m and/or Visual 
b760: 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75 73  Studio that caus
b770: 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  es the..        
b780: 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45    //       PROCE
b790: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
b7a0: 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  E environment va
b7b0: 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69  riable to contai
b7c0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
b7d0: 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20   //       wrong 
b7e0: 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69  value in some ci
b7f0: 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c  rcumstances.  Pl
b800: 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 69  ease refer to ti
b810: 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  cket..          
b820: 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38 36  //       [9ac986
b830: 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65  2611] for furthe
b840: 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  r information...
b850: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b860: 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e 74          if ((Int
b870: 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65  Ptr.Size == size
b880: 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20  of(int)) &&..   
b890: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
b8a0: 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73  g.Equals(process
b8b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
b8c0: 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20  "AMD64",..      
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
b8e0: 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
b8f0: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
b900: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
b910: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
b920: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
b930: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
b940: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b950: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
b960: 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20  When tracing is 
b970: 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68  enabled, save th
b980: 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74  e originally det
b990: 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20  ected..         
b9a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
b9b0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
b9c0: 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e  ture before chan
b9d0: 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20  ging it...      
b9e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b9f0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
ba00: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
ba10: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70 72  rchitecture = pr
ba20: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
ba30: 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ure;..#endif....
ba40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ba50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba60: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77  // NOTE: We know
ba70: 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20   that operating 
ba80: 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74  systems that ret
ba90: 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a  urn "AMD64" as..
baa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bab0: 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63 65         the proce
bac0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
bad0: 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61  e are actually a
bae0: 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20   superset of..  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
bb00: 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20 70       the "x86" p
bb10: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
bb20: 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65  cture; therefore
bb30: 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20  , return..      
bb40: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
bb50: 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65 20   "x86" when the 
bb60: 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20  pointer size is 
bb70: 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20  32-bits...      
bb80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
bb90: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
bba0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
bbb0: 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20  = "x86";....#if 
bbc0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
bbd0: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
bbe0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
bbf0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
bc00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
bc10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68  // NOTE: Show th
bc40: 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69 72  at we hit a fair
bc50: 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61  ly unusual situa
bc60: 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20  tion (i.e...    
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bc80: 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e         the "wron
bc90: 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  g" processor arc
bca0: 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64 65  hitecture was de
bcb0: 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  tected)...      
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
bcf0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
bd00: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
bd30: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
bd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd50: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
bd60: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
bd70: 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d  er detected {0}-
bd80: 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d  bit pointer " +.
bd90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bda0: 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69 74         "size wit
bdb0: 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  h processor arch
bdc0: 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22  itecture \"{1}\"
bdd0: 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20  , using " +..   
bde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdf0: 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72     "processor ar
be00: 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d  chitecture \"{2}
be10: 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d  \" instead...",.
be20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be30: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69         IntPtr.Si
be40: 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a  ze * 8 /* bits *
be50: 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f  /, savedProcesso
be60: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a  rArchitecture,..
be70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be80: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
be90: 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f  rchitecture)); /
bea0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
beb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
bec0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
bed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bee0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
bef0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
bf00: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
bf10: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
bf20: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
bf30: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
bf40: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
bf50: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
bf60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bf70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
bf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
bf90: 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
bfa0: 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
bfb0: 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ork, attempt to 
bfc0: 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  use the native..
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
bfe0: 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50 49         Win32 API
bff0: 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50   function (via P
c000: 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61  /Invoke) that ca
c010: 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20  n provide us..  
c020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c030: 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70 72       with the pr
c040: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
c050: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
c060: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c070: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
c080: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
c0a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c0b0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
c0c0: 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20  e output of the 
c0d0: 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75  GetSystemInfo fu
c0e0: 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a  nction will be..
c0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c100: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65    //       place
c110: 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68  d here.  Only th
c120: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
c130: 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a  itecture field..
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73    //       is us
c160: 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f  ed by this metho
c170: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
c180: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c190: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
c1a0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57  feNativeMethodsW
c1b0: 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f  in32.SYSTEM_INFO
c1c0: 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a   systemInfo;....
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1e0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
c1f0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c200: 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74 65   Query the syste
c210: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69  m information vi
c220: 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73  a P/Invoke, thus
c230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c240: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c      //       fil
c250: 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75  ling the structu
c260: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
c270: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
c290: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
c2a0: 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49  Win32.GetSystemI
c2b0: 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e  nfo(out systemIn
c2c0: 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  fo);....        
c2d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2f0: 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20  // NOTE: Return 
c300: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
c310: 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75 65  chitecture value
c320: 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   as a string... 
c330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c340: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
c350: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
c360: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a  Architecture =..
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c380: 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f        systemInfo
c390: 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  .wProcessorArchi
c3a0: 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67  tecture.ToString
c3b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
c3c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c3d0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
c3e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c400: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
c410: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
c420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
c430: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c440: 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66   // NOTE: Upon f
c450: 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61  ailure, return a
c460: 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20  n empty string. 
c470: 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65   This will preve
c480: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
c490: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
c4a0: 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72  alling method fr
c4b0: 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74  om considering t
c4c0: 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20  his method call 
c4d0: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
c4e0: 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75   //       "failu
c4f0: 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  re"...          
c500: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
c510: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
c520: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
c530: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
c540: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
c550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
c580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c5b0: 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f   return processo
c5c0: 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
c5d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c5e0: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
c630: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c640: 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e  .      /// Given
c650: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
c660: 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74  rchitecture, ret
c670: 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  urns the name of
c680: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a   the platform...
c690: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c6a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c6b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
c6c0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c6d0: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
c6e0: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
c6f0: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65  chitecture to be
c700: 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61   translated to a
c710: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
c720: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
c730: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
c740: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
c750: 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d  /// The platform
c760: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70   name for the sp
c770: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
c780: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d  r architecture -
c790: 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  OR- null..      
c7a0: 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  /// if it cannot
c7b0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
c7c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
c7d0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
c7e0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
c7f0: 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ng GetPlatformNa
c800: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me(..          s
c810: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
c820: 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69  rchitecture /* i
c830: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
c840: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
c850: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
c860: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
c870: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
c880: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
c890: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
c8a0: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
c8b0: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
c8c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
c8d0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
c8e0: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
c8f0: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
c900: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c910: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
c920: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
c930: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
c940: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c950: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
c960: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
c970: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
c980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c990: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
c9a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c9b0: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
c9c0: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
c9d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
c9e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
c9f0: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
ca00: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
ca20: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
ca30: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
ca40: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
ca50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
ca70: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
ca80: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ca90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
caa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
cab0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
cac0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f  ////////////////
caf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb10: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
cb20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
cb30: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
cb40: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
cb50: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
cb60: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
cb70: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
cb80: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
cb90: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
cba0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
cbb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cbc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
cbd0: 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
cbe0: 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
cbf0: 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63  / The base direc
cc00: 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c  tory to use, nul
cc10: 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
cc20: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
cc30: 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y of..      /// 
cc40: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
cc50: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e  ication domain).
cc60: 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79    This directory
cc70: 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
cc80: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
cc90: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
cca0: 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73  cture specific s
ccb0: 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d  ub-directories..
ccc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
ccd0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
cce0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
ccf0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
cd00: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
cd10: 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f  he requested pro
cd20: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
cd30: 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  ure, null for de
cd40: 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20  fault (the..    
cd50: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
cd60: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
cd70: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
cd80: 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c  ess).  This call
cd90: 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  er should..     
cda0: 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61   /// almost alwa
cdb0: 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20  ys specify null 
cdc0: 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74  for this paramet
cdd0: 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  er...      /// <
cde0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
cdf0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ce00: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
ce10: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
ce20: 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20  / The candidate 
ce30: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69  native module fi
ce40: 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20  le name to load 
ce50: 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68  will be stored h
ce60: 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ere,..      /// 
ce70: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
ce80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
ce90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
cea0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
ceb0: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a  ModuleHandle">..
cec0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
ced0: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
cee0: 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62  le as returned b
cef0: 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69  y LoadLibrary wi
cf00: 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20  ll be stored..  
cf10: 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66      /// here, if
cf20: 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69   necessary.  Thi
cf30: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
cf40: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74  IntPtr.Zero if t
cf50: 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20  he call to..    
cf60: 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72    /// LoadLibrar
cf70: 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  y fails...      
cf80: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
cf90: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
cfa0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
cfb0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74  -zero if the nat
cfc0: 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c  ive module was l
cfd0: 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c  oaded successful
cfe0: 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  ly; otherwise,..
cff0: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d        /// zero..
d000: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
d010: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
d020: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
d030: 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c   PreLoadSQLiteDl
d040: 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  l(..          st
d050: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
d060: 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f  ry,            /
d070: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
d080: 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
d090: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
d0a0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
d0b0: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
d0c0: 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  ng nativeModuleF
d0d0: 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20  ileName, /* out 
d0e0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  */..          re
d0f0: 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d  f IntPtr nativeM
d100: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f  oduleHandle    /
d110: 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
d120: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
d130: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d140: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
d150: 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
d160: 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  d base directory
d170: 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
d180: 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20  e default..     
d190: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
d1a0: 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61  .e. attempt to a
d1b0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74  utomatically det
d1c0: 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20  ect it)...      
d1d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d1e0: 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
d1f0: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
d200: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
d210: 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42  Directory = GetB
d220: 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  aseDirectory();.
d230: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
d240: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
d250: 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
d260: 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61   to query the ba
d270: 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74  se directory, st
d280: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
d290: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d2a0: 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
d2b0: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
d2c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d2d0: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
d2e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d2f0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74      // NOTE: Det
d300: 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20  ermine the base 
d310: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
d320: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
d330: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
d340: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20      //       If 
d350: 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77  this is not know
d360: 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c  n by this class,
d370: 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69   we cannot conti
d380: 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nue...          
d390: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
d3a0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ring fileNameOnl
d3b0: 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62  y = GetNativeLib
d3c0: 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
d3d0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
d3e0: 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
d3f0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
d400: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d410: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
d420: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d430: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
d440: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
d450: 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20   library exists 
d460: 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65  in the base dire
d470: 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  ctory..         
d480: 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66   //       itself
d490: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
d4a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d4b0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
d4c0: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
d4d0: 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d  ileName(MaybeCom
d4e0: 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69 72  binePath(baseDir
d4f0: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
d500: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f         fileNameO
d510: 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly));....      
d520: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
d530: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
d540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d550: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
d560: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
d570: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
d580: 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
d590: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
d5a0: 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c  tecture is null,
d5b0: 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
d5c0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66      //       def
d5d0: 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  ault...         
d5e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
d5f0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
d600: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
d610: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d620: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
d630: 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
d640: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d650: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
d660: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d670: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
d680: 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74  ailed to query t
d690: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
d6a0: 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20  hitecture, stop 
d6b0: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
d6c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
d6d0: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
d6e0: 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
d6f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d700: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
d710: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d720: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
d730: 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
d740: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
d750: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
d760: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
d770: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
d780: 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
d790: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
d7a0: 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20  ecture name...  
d7b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d7c0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
d7d0: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
d7e0: 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
d7f0: 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  th(MaybeCombineP
d800: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
d810: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
d820: 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  y, processorArch
d830: 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e  itecture), fileN
d840: 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
d850: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d860: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
d870: 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  f the file name 
d880: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f  based on the pro
d890: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d8a0: 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ure name..      
d8b0: 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f      // is not fo
d8c0: 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74  und, try using t
d8d0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c  he associated pl
d8e0: 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
d8f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d900: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
d910: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
d920: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d950: 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
d960: 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
d970: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
d980: 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20  itecture to a.. 
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d9a0: 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e        platform n
d9b0: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
d9c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d9d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
d9e0: 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50  tformName = GetP
d9f0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63  latformName(proc
da00: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
da10: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
da20: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
da30: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
da40: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
da50: 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c  translate the pl
da60: 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f  atform name, sto
da70: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
da80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
da90: 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61 74          if (plat
daa0: 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  formName == null
dab0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dac0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
dad0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
dae0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
daf0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
db00: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
db10: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
db20: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
db30: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
db40: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
db50: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
db60: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
db70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
db80: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
db90: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
dba0: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79  pDllFileName(May
dbb0: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61  beCombinePath(Ma
dbc0: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d  ybeCombinePath(.
dbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dbe0: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
dbf0: 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c  , platformName),
dc00: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
dc10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dc20: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
dc30: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
dc40: 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
dc50: 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72  t exist, skip tr
dc60: 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e  ying to load it.
dc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dc80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
dc90: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
dca0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcc0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
dcd0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
dce0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
dcf0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
dd00: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
dd10: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
dd20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
dd30: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
dd40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dd50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dd70: 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
dd80: 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
dd90: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
dda0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ddc0: 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
ddd0: 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ddf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de00: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
de10: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
de20: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
de30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de40: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
de50: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
de60: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
de70: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
de80: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
de90: 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20 74  ader is trying t
dea0: 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
deb0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
dec0: 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
ded0: 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
dee0: 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29  ...", fileName))
def0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
df00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
df20: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
df30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
df40: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
df50: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
df60: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
df70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
df80: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
df90: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
dfa0: 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  mpt to load the 
dfb0: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20  native library. 
dfc0: 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65   This will eithe
dfd0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
dfe0: 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e   //       return
dff0: 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20   a valid native 
e000: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72  module handle, r
e010: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
e020: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
e030: 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68    //       or th
e040: 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  row an exception
e050: 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73 65  .  This must use
e060: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
e070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e080: 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b  //       P/Invok
e090: 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65  e method for the
e0a0: 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
e0b0: 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20  ng system...    
e0c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
e0e0: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
e0f0: 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
e100: 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
e110: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
e120: 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65   NativeLibraryHe
e130: 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79  lper.LoadLibrary
e140: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e160: 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c  urn (nativeModul
e170: 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  eHandle != IntPt
e180: 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
e190: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
e1a0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
e1b0: 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
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 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
e1e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
e1f0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
e200: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
e210: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
e220: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
e230: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
e240: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
e250: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e270: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e280: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e290: 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20  First, grab the 
e2a0: 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72  last Win32 error
e2b0: 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
e2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2e0: 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20    int lastError 
e2f0: 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73  = Marshal.GetLas
e300: 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f  tWin32Error(); /
e310: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e330: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
e340: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
e350: 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61 69  how where we fai
e360: 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  led to load the 
e370: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e390: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
e3a0: 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74  y from along wit
e3b0: 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f  h the Win32 erro
e3c0: 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20  r code and..    
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e3e0: 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e         exception
e3f0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
e400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e410: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e420: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
e430: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
e440: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
e450: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
e460: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
e470: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
e480: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
e490: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
e4a0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
e4b0: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
e4c0: 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
e4d0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
e4e0: 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
e4f0: 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
e500: 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d   (getLastError =
e510: 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20   {1}): {2}",..  
e520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e530: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61      fileName, la
e540: 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a  stError, e)); /*
e550: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
e560: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e570: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
e580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
e590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5a0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
e5b0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
e5c0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
e5d0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e5e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
e5f0: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
e600: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
e610: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e620: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
e650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e670: 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
e680: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e690: 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  RK..    //..    
e6a0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
e6b0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
e6c0: 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69  mework, the nati
e6d0: 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  ve interop assem
e6e0: 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f  bly must..    //
e6f0: 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62         be used b
e700: 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69 64  ecause it provid
e710: 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61  es several worka
e720: 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43  rounds to .NET C
e730: 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20  ompact..    //  
e740: 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c       Framework l
e750: 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72  imitations impor
e760: 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20  tant for proper 
e770: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
e780: 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20   core..    //   
e790: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
e7a0: 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61  SQLite functiona
e7b0: 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67  lity (e.g. being
e7c0: 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20   able to bind.. 
e7d0: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61     //       para
e7e0: 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c  meters and handl
e7f0: 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  e column values 
e800: 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20 61  of types Int64 a
e810: 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20  nd Double)...   
e820: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
e830: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
e840: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
e850: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 33 2e  ite.Interop.103.
e860: 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c  dll";..#elif SQL
e870: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
e880: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
e890: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
e8a0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
e8b0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
e8c0: 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e  enabled, use it.
e8d0: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
e8e0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
e8f0: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
e900: 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
e910: 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  if USE_INTEROP_D
e920: 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  LL..    //..    
e930: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
e940: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
e950: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
e960: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
e970: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
e980: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
e990: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
e9a0: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
e9b0: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
e9c0: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
e9d0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
e9e0: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
e9f0: 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
ea00: 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
ea10: 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
ea20: 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
ea30: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
ea40: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
ea50: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
ea60: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
ea70: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
ea80: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
ea90: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
eaa0: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
eab0: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
eac0: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
ead0: 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
eae0: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
eaf0: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
eb00: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
eb10: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
eb20: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
eb30: 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
eb40: 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
eb50: 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
eb60: 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
eb70: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
eb80: 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
eb90: 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
eba0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
ebb0: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
ebc0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ebd0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ebe0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ebf0: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
ec00: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
ec10: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
ec20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
ec30: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
ec40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ec50: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ec60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ec70: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
ec80: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
ec90: 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
eca0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
ecb0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
ecc0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
ecd0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ece0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
ecf0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ed00: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
ed10: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
ed20: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
ed30: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
ed40: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
ed50: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
ed60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ed70: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
ed80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ed90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
eda0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
edb0: 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
edc0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
edd0: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
ede0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
edf0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ee00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ee10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ee20: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
ee30: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
ee40: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
ee50: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
ee60: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
ee70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ee80: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
ee90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
eea0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
eeb0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
eec0: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
eed0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
eee0: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
eef0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
ef00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ef10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ef20: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
ef30: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
ef40: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
ef50: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
ef60: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
ef70: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
ef80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ef90: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
efa0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
efb0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
efc0: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
efd0: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
efe0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
eff0: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
f000: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
f010: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f020: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f030: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
f040: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
f050: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
f060: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f070: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f080: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f090: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f0a0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f0b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f0c0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f0d0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
f0e0: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
f0f0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
f100: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
f110: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
f120: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f130: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f140: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f150: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
f160: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
f170: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
f180: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
f190: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
f1a0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
f1b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f1c0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f1d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f1e0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
f1f0: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
f200: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
f210: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
f220: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
f230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f240: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f250: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f260: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
f270: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
f280: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f290: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f2a0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f2b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f2c0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f2d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f2e0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f2f0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
f300: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
f310: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
f320: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
f330: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f340: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f350: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
f360: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
f370: 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
f380: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
f390: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
f3a0: 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
f3b0: 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
f3c0: 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
f3d0: 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
f3e0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
f3f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f400: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f410: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
f420: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
f430: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
f440: 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
f450: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
f460: 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
f470: 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
f480: 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
f490: 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
f4a0: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
f4b0: 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
f4c0: 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
f4d0: 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
f4e0: 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
f4f0: 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
f500: 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
f510: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f520: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
f530: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f540: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f550: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
f560: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
f570: 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
f580: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
f590: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f5a0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f5b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f5c0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
f5d0: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
f5e0: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
f5f0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
f600: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f610: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f620: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f630: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
f640: 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
f650: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
f660: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
f670: 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
f680: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f690: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f6a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
f6b0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
f6c0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
f6d0: 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
f6e0: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
f6f0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
f700: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
f710: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
f720: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
f730: 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
f740: 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
f750: 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
f760: 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
f770: 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
f780: 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
f790: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
f7a0: 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
f7b0: 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
f7c0: 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
f7d0: 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
f7e0: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
f7f0: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
f800: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f810: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f820: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
f830: 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
f840: 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
f850: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f860: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f870: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f880: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
f890: 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
f8a0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f8b0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f8c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f8d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
f8e0: 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
f8f0: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
f900: 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
f910: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f920: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f930: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f940: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f950: 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
f960: 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
f970: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f980: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f990: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f9a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
f9b0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
f9c0: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
f9d0: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
f9e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f9f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fa00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fa10: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
fa20: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
fa30: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
fa40: 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
fa50: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
fa60: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
fa70: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
fa80: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
fa90: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
faa0: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
fab0: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
fac0: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
fad0: 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
fae0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
faf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
fb00: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
fb10: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
fb20: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
fb30: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
fb40: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
fb50: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
fb60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fb70: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
fb80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fb90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
fba0: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
fbb0: 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
fbc0: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
fbd0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fbe0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
fbf0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fc00: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
fc10: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
fc20: 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65  _blob_close_inte
fc30: 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29  rop(IntPtr blob)
fc40: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
fc50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
fc60: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fc70: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
fc80: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fc90: 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
fca0: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
fcb0: 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
fcc0: 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
fcd0: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
fce0: 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
fcf0: 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
fd00: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
fd10: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
fd20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fd30: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fd40: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fd50: 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
fd60: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
fd70: 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
fd80: 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
fd90: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
fda0: 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
fdb0: 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
fdc0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
fdd0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
fde0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fdf0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fe00: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fe10: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
fe20: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
fe30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fe40: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fe50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fe60: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
fe70: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
fe80: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
fe90: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
fea0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
feb0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
fec0: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
fed0: 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
fee0: 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
fef0: 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
ff00: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
ff10: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
ff20: 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
ff30: 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
ff40: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
ff50: 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
ff60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ff70: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
ff80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ff90: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ffa0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ffb0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ffc0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ffd0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ffe0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fff0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10000 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10010 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
10020 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
10030 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
10040 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
10050 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10060 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10080 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10090 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
100a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
100b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
100c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
100d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
100e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
100f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10100 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10110 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
10120 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
10130 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
10140 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
10150 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10160 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10170 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10180 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10190 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
101a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
101b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
101c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
101d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
101e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
101f0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10200 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
10210 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
10220 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
10230 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
10240 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
10250 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
10260 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
10270 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
10280 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
10290 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
102a0 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
102b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
102c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
102d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
102e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
102f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10300 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10310 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10330 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10370 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
10380 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
10390 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
103a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
103b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
103c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
103d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
103e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
103f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10400 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10410 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10420 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10430 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10440 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10450 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
10460 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
10470 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
10480 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10490 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
104a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
104b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
104c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
104d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
104e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
104f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10500 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10510 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10520 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10530 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10540 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
10550 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
10560 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10570 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10580 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10590 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
105a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
105b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
105c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
105d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
105e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
105f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10600 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10610 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
10620 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
10630 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10640 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10650 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10660 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10670 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10680 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10690 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
106a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
106b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
106c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
106d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
106e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
106f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10700 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
10710 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
10720 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10730 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
10740 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10750 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10760 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10770 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10780 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10790 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
107a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
107b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
107c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
107d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
107e0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
107f0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
10800 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
10810 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10820 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
10830 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10840 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10850 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10860 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10870 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10880 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10890 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
108a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
108b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
108c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
108d0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
108e0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
108f0 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
10900 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10910 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10920 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10930 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10940 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10950 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10960 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10970 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10980 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10990 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
109a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
109b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
109c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
109d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
109e0 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
109f0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
10a00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10a10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10a20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10a30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10a40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10a50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10a60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10a70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10a80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10a90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10aa0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10ab0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
10ac0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
10ad0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10ae0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
10af0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10b00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10b10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10b20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10b30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10b40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10b50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10b60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10b70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10b80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10b90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10ba0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10bb0 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
10bc0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10bd0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10be0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10bf0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10c00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10c10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10c20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10c30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10c40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10c50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10c60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10c70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10c80 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10c90 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
10ca0 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
10cb0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10cc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10cd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10ce0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10cf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10d00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10d10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10d20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10d30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10d40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10d50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10d60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10d70 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
10d80 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
10d90 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
10da0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10db0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10dc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10dd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10de0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10df0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10e00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10e10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10e20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10e30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10e40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10e50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10e60 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10e70 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
10e80 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
10e90 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
10ea0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10eb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10ec0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10ed0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10ee0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10ef0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10f00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
10f10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
10f20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10f30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10f40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10f50 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
10f60 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
10f70 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
10f80 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
10f90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10fa0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10fb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10fc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
10fd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10fe0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
10ff0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11000 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11010 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11020 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11030 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11040 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11050 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
11060 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11070 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
11080 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11090 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
110a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
110b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
110c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
110d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
110e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
110f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11100 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11110 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11120 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11130 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
11140 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
11150 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11160 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
11170 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11180 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11190 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
111a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
111b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
111c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
111d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
111e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
111f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11200 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11210 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11220 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
11230 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
11240 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11250 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11270 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11280 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
112a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
112b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
112c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
112d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
112e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
112f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11300 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
11310 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
11320 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
11330 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
11340 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
11350 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
11360 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
11370 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11380 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11390 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
113a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
113b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
113c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
113d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
113e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
113f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11400 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11410 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11420 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
11430 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
11440 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
11450 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
11460 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
11470 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
11480 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
11490 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
114a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
114b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
114c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
114d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
114e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
114f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11500 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11510 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11520 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11530 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11540 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11550 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11560 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
11570 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
11580 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
11590 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
115a0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
115b0 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
115c0 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
115d0 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
115e0 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
115f0 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
11600 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
11610 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
11620 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11630 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11650 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11660 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11670 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11680 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
116a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
116b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
116c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
116d0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
116e0 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
116f0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
11700 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11710 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11720 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11730 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11740 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11750 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11760 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11780 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11790 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
117a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
117b0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
117c0 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
117d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
117e0 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
117f0 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
11800 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
11810 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
11820 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
11830 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
11840 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
11850 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
11860 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
11870 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
11880 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
11890 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
118a0 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
118b0 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
118c0 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
118d0 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
118e0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
118f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11900 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
11910 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11920 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
11930 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
11940 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
11950 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
11960 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
11970 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
11980 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
11990 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
119a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
119b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
119c0 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
119d0 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
119e0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
119f0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
11a00 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
11a10 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
11a20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
11a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11a40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11a50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11a60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11a70 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
11a80 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
11a90 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
11aa0 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
11ab0 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
11ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11ad0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
11ae0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11af0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11b00 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
11b10 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
11b20 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
11b30 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
11b40 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
11b50 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
11b60 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
11b70 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
11b80 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
11b90 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
11ba0 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
11bb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11bc0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11bd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11be0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
11bf0 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
11c00 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
11c10 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
11c20 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
11c30 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
11c40 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
11c50 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
11c60 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
11c70 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
11c80 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
11c90 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
11ca0 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
11cb0 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
11cc0 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
11cd0 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
11ce0 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
11cf0 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
11d00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11d10 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
11d20 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
11d30 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
11d40 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
11d50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11d60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11d70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11d80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11d90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11da0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11db0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11dc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11dd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11de0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11df0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11e00 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
11e10 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
11e20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11e30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11e40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11e50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11e60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11e70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11e80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11e90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11ea0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11eb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11ec0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11ed0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
11ee0 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
11ef0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11f00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11f10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11f20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11f30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11f40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11f50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11f60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11f70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11f80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11f90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11fa0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11fb0 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
11fc0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11fd0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11fe0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11ff0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12000 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12010 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12020 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12030 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12040 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12050 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12060 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12070 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
12080 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
12090 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
120a0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
120b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
120c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
120d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
120e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
120f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12100 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12110 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12120 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12130 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12140 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12150 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12160 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
12170 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
12180 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12190 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
121a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
121b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
121c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
121d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
121e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
121f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12200 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12210 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12220 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12230 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12240 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
12250 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
12260 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  he(..        int
12270 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
12280 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12290 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
122a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
122b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
122c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
122d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
122e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
122f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12300 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12310 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12320 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12330 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12340 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
12350 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
12360 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
12370 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
12380 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12390 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
123a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
123b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
123c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
123d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
123e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
123f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12400 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12410 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12420 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12430 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
12440 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  e sqlite3_load_e
12450 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
12460 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79     IntPtr db, by
12470 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62  te[] fileName, b
12480 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20  yte[] procName, 
12490 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
124a0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
124b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
124c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
124d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
124e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
124f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12500 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12510 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12520 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12530 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12540 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12550 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
12560 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
12570 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f  overload_functio
12580 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  n(IntPtr db, Int
12590 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  Ptr zName, int n
125a0 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49  Args);....#if WI
125b0 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54  NDOWS..#if !PLAT
125c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
125d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
125e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
125f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
12620 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
12630 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
12640 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12650 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
12660 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
12670 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
12680 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
12690 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
126a0 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
126b0 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65  irectory" SQLite
126c0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
126d0 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
126e0 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
126f0 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
12700 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  s...    //..    
12710 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12720 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12730 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
12740 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f  in32_set_directo
12750 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74  ry(uint type, st
12760 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
12770 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f  #if !DEBUG // NO
12780 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57  TE: Should be "W
12790 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d  IN32HEAP && !MEM
127a0 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41  DEBUG"..#if !PLA
127b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
127c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
127d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
127e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
127f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12800 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12810 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12830 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12840 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
12850 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
12860 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
12870 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
12880 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
12890 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
128a0 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
128b0 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
128c0 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
128d0 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
128e0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
128f0 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
12900 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
12910 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
12920 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
12930 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
12940 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
12950 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
12960 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
12970 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
12980 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
12990 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
129a0 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
129b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
129c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
129d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
129e0 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
129f0 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eap();....#if !P
12a00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12a10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12a20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12a30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12a40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12a50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12a60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12a70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12a80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12a90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
12aa0 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
12ab0 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
12ac0 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
12ad0 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
12ae0 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
12af0 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
12b00 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
12b10 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
12b20 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
12b30 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
12b40 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
12b50 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
12b60 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
12b70 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
12b80 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
12b90 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
12ba0 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
12bb0 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
12bc0 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
12bd0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
12be0 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
12bf0 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
12c00 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
12c10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
12c20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
12c30 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
12c40 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69  pact_heap(ref ui
12c50 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65  nt largest);..#e
12c60 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
12c70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12c80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12c90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12ca0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12cb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12cc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12cd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12ce0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12cf0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12d00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12d10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12d20 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12d30 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
12d40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12d50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12d60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12d70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12d80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12d90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12da0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12db0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12dc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12dd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12de0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12df0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
12e00 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72  3_realloc(IntPtr
12e10 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23   p, int n);....#
12e20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12e30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12e40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12e50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12e60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12e70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12e80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12e90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12ea0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12eb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12ec0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12ed0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
12ee0 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
12ef0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12f00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12f10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12f20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12f50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12f70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12f80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12f90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12fa0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12fb0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
12fc0 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
12fd0 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  name, ref IntPtr
12fe0 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46   db, SQLiteOpenF
12ff0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
13000 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b  byte[] vfsName);
13010 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13020 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13030 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13040 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13050 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13060 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13070 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
13080 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
13090 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
130a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
130b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
130c0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
130d0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
130e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
130f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13100 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13110 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
13120 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49   fileName, ref I
13130 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
13140 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13150 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13160 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13170 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13180 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13190 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
131a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
131b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
131c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
131d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
131e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
131f0 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
13200 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29  rrupt(IntPtr db)
13210 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13220 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13230 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13250 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13260 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13270 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
13280 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13290 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
132a0 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
132b0 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
132c0 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  db);..#endif....
132d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
132e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
132f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13300 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13310 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13320 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13330 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13340 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13350 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13360 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13370 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13380 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
13390 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
133a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
133b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
133c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
133d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
133e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
133f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13400 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
13410 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13420 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
13430 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
13440 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  d();..#endif....
13450 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13480 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13490 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
134a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
134b0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
134c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
134d0 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
134e0 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
134f0 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  er(int resetFlag
13500 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
13510 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13520 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13530 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13540 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13550 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13570 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13580 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13590 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
135a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
135b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
135c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
135d0 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
135e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
135f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13600 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13630 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13640 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13650 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13660 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13680 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13690 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
136a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
136b0 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50  usy_timeout(IntP
136c0 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d  tr db, int ms);.
136d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
136e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
136f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13700 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13710 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13720 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13730 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13740 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13760 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13770 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13780 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
13790 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61  ode sqlite3_clea
137a0 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74  r_bindings(IntPt
137b0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
137c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
137d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
137e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
137f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13800 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13810 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13820 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13830 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13840 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13850 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13860 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13870 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13880 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49  ite3_bind_blob(I
13890 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
138a0 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61  index, Byte[] va
138b0 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
138c0 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e  IntPtr nTransien
138d0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
138e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
138f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13900 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13910 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13920 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13930 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13940 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13950 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13960 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13970 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
13980 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
13990 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76   index, double v
139a0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
139b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
139c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
139d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
139e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
139f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13a00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13a10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13a20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13a30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13a40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13a50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13a60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
13a70 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
13a80 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
13a90 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20   int index, int 
13aa0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  value);....    /
13ab0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
13ac0 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
13ad0 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
13ae0 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76  bind_int"; howev
13af0 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a  er, it has the..
13b00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72      //       cor
13b10 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74  rect type signat
13b20 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67  ure for an unsig
13b30 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74  ned (32-bit) int
13b40 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
13b50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13b60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13b70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13b80 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
13b90 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
13ba0 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69  bind_int", Calli
13bb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13bc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13bd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13be0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13bf0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
13c00 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
13c10 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23  3_bind_int")]..#
13c20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13c30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13c40 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13c50 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
13c60 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
13c70 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74   int index, uint
13c80 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
13c90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13ca0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13cb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13cc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13cd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13cf0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
13d00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13d10 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13d20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
13d30 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
13d40 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67   int index, long
13d50 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
13d60 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
13d70 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
13d80 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
13d90 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
13da0 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  t64"; however, i
13db0 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
13dc0 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
13dd0 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
13de0 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c  or an unsigned l
13df0 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74  ong (64-bit) int
13e00 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
13e10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13e20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13e40 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
13e50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
13e60 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c  bind_int64", Cal
13e70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13e80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13e90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
13ea0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13eb0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13ec0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
13ed0 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74  ind_uint64(IntPt
13ee0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
13ef0 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  x, ulong value);
13f00 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
13f10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13f20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13f30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13f40 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13f50 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13f60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13f70 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13f80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13f90 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13fa0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13fb0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
13fc0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
13fd0 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49  ite3_bind_null(I
13fe0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
13ff0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
14000 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14010 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14020 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14030 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14040 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14050 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14060 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14070 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14080 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14090 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
140a0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
140b0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
140c0 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e  te3_bind_text(In
140d0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
140e0 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c  ndex, byte[] val
140f0 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
14100 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
14110 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14120 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14130 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14140 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14150 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14160 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14170 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14180 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14190 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
141a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
141b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
141c0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
141d0 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
141e0 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
141f0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
14200 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14210 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14220 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14230 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14240 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14250 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14260 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14270 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14280 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14290 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
142a0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
142b0 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
142c0 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72  ter_index(IntPtr
142d0 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74   stmt, byte[] st
142e0 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  rName);....#if !
142f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14300 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14320 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14330 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14340 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14350 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14360 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14370 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14380 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14390 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
143a0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63  sqlite3_column_c
143b0 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
143c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
143d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
143e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
143f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14400 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14410 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14420 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14430 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14440 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14450 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14460 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14470 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14480 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
14490 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  tep(IntPtr stmt)
144a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
144b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
144c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
144d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
144e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
144f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14500 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14510 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14520 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14530 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14540 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14550 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14560 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
14570 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a  IntPtr stmt); /*
14580 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69   3.7.4+ */....#i
14590 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
145a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
145b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
145c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
145d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
145e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
145f0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
14600 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14610 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
14620 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
14630 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14640 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
14650 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14660 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14670 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14680 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14690 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
146a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
146b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
146c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
146d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
146e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
146f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14700 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
14710 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
14720 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14730 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
14740 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14750 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14760 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14770 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14780 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14790 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
147a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
147b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
147c0 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
147d0 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
147e0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
147f0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
14800 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14810 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14820 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14830 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14840 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14850 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14860 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14870 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14880 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14890 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
148a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
148b0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
148c0 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74  n_blob(IntPtr st
148d0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
148e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
148f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14900 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14910 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14930 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14940 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14950 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14960 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14970 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14980 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14990 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
149a0 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74  column_bytes(Int
149b0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
149c0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
149d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
149e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
149f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14a00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14a10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14a20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14a30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14a40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14a50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14a60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14a70 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
14a80 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
14a90 65 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  es16(IntPtr stmt
14aa0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
14ab0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
14ac0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
14ad0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14ae0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
14af0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
14b00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14b10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14b20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14b30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14b40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14b50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14b60 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73  n TypeAffinity s
14b70 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
14b80 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
14b90 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
14ba0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14bb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14bc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14bd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14bf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14c00 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14c10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14c20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14c30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14c40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14c50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14c60 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
14c70 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20  ollation(IntPtr 
14c80 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
14c90 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  me, int nType, I
14ca0 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
14cb0 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75  LiteCollation fu
14cc0 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nc);....#if !PLA
14cd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14ce0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14cf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14d00 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14d10 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14d20 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14d30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14d40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14d50 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14d60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14d70 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
14d80 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
14d90 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  ount(IntPtr cont
14da0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
14db0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14dc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14de0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14df0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14e00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14e10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14e20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14e30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14e40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14e50 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
14e60 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
14e70 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  lob(IntPtr p);..
14e80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14e90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14ea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14eb0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14ec0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14ed0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14ee0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14ef0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14f00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14f10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14f20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14f30 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
14f40 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74  alue_bytes(IntPt
14f50 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
14f60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14f70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14f80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14f90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14fa0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14fb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14fc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14fd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14fe0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14ff0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15000 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
15010 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
15020 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  s16(IntPtr p);..
15030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
150a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
150b0 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
150c0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
150d0 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  le(IntPtr p);..#
150e0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
150f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15100 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15110 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15120 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15130 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15140 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15150 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15160 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15170 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15180 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15190 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
151a0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
151b0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
151c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
151d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
151e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
151f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15200 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15210 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15220 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
15230 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15240 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
15250 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50  value_int64(IntP
15260 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
15270 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15280 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15290 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
152a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
152b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
152c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
152d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
152e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
152f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15300 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15310 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15320 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
15330 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
15340 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  pe(IntPtr p);...
15350 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15360 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15370 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15380 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15390 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
153a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
153b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
153c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
153d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
153e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
153f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15400 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
15410 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74  esult_blob(IntPt
15420 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
15430 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
15440 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  ze, IntPtr pvRes
15450 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
15460 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15470 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15480 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15490 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
154a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
154b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
154c0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
154d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
154e0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
154f0 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ult_double(IntPt
15500 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c  r context, doubl
15510 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
15520 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
15530 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15540 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15550 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15560 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15570 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15580 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15590 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
155a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
155b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
155c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
155d0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
155e0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28  e3_result_error(
155f0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15600 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69  byte[] strErr, i
15610 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
15620 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15630 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15640 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15650 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15660 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15670 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15680 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15690 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
156a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
156b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
156c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
156d0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
156e0 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74  t_error_code(Int
156f0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
15700 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c  iteErrorCode val
15710 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
15720 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15730 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15740 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15750 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15760 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15770 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15780 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15790 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
157a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
157b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
157c0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
157d0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
157e0 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72  or_toobig(IntPtr
157f0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
15800 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15810 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15820 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15830 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15840 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15850 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15860 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15870 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15880 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15890 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
158a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
158b0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
158c0 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49  lt_error_nomem(I
158d0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
158e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
158f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15900 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15910 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15920 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15930 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15940 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15950 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15960 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15970 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15980 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15990 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
159a0 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e  _result_value(In
159b0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
159c0 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  tPtr value);....
159d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
159e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
159f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15a00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15a10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15a20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15a30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15a40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15a50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15a60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15a70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15a80 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
15a90 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e  sult_zeroblob(In
15aa0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
15ab0 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
15ac0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15ad0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15ae0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15af0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15b00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15b10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15b20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15b30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15b40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15b50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15b60 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15b70 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
15b80 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  _int(IntPtr cont
15b90 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  ext, int value);
15ba0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15bb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15bc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15bd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15be0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15bf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15c00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
15c10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15c20 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
15c30 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
15c40 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  64(IntPtr contex
15c50 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  t, long value);.
15c60 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
15c70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15c80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15c90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15ca0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15cb0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15cc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15cd0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15ce0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15cf0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15d00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15d10 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
15d20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
15d30 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  null(IntPtr cont
15d40 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
15d50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15d60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15d70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15d80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15d90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15da0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15db0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15dc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15dd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15df0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
15e00 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
15e10 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
15e20 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
15e30 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
15e40 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
15e50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15e60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15e70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15e80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15e90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15ea0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15eb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15ec0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15ed0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15ee0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15ef0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15f00 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
15f10 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74  3_aggregate_cont
15f20 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
15f30 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  xt, int nBytes);
15f40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15f50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15f60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15f70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15f80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15f90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15fa0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
15fb0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
15fc0 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
15fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15fe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
15ff0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
16000 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
16010 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16020 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
16030 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
16040 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49  e3_bind_text16(I
16050 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
16060 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
16070 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
16080 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
16090 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
160a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
160b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
160c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
160d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
160e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
160f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
16100 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16110 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
16120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
16140 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
16150 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
16160 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16170 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
16180 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
16190 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20  _error16(IntPtr 
161a0 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
161b0 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
161c0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
161d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
161e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
161f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16200 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16210 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
16230 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
16240 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
16250 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16260 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
16270 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16280 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
16290 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
162a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
162b0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
162c0 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  t_text16(IntPtr 
162d0 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
162e0 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
162f0 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
16300 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  rved);....#if IN
16310 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49  TEROP_CODEC || I
16320 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53  NTEROP_INCLUDE_S
16330 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  EE..#if !PLATFOR
16340 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16350 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16360 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16370 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16380 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16390 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
163a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
163b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
163c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
163d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
163e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
163f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79  Code sqlite3_key
16400 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
16410 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
16420 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
16430 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16440 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16450 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16460 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16470 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16480 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16490 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
164a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
164b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
164c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
164d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
164e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
164f0 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62  _rekey(IntPtr db
16500 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
16510 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64  t keylen);..#end
16520 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  if....#if INTERO
16530 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53  P_INCLUDE_ZIPVFS
16540 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16550 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16560 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16570 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16580 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16590 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
165a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
165b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
165c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
165d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
165e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
165f0 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e  rn void zipvfsIn
16600 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20  it_v2();....#if 
16610 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16620 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16640 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16650 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16660 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16670 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16680 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16690 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
166a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
166b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
166c0 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28  d zipvfsInit_v3(
166d0 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23  int regDflt);..#
166e0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
166f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16700 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16710 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16720 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16730 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16740 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16750 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16760 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16770 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16780 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16790 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
167a0 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
167b0 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64  handler(IntPtr d
167c0 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69  b, int ops, SQLi
167d0 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61  teProgressCallba
167e0 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
167f0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
16800 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16810 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16820 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16830 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16840 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16860 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16880 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
16890 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
168a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
168b0 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  Ptr sqlite3_set_
168c0 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74  authorizer(IntPt
168d0 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68  r db, SQLiteAuth
168e0 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66  orizerCallback f
168f0 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
16900 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
16910 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16920 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16930 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16940 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16950 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16960 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16970 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16980 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16990 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
169a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
169b0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
169c0 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
169d0 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
169e0 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
169f0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
16a00 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
16a10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16a20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16a30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16a40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16a50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16a60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16a70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16a80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16a90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16aa0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16ab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
16ac0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
16ad0 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
16ae0 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
16af0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
16b00 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
16b10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16b20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16b40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16b50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16b60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16b70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16b80 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16b90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16ba0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16bb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16bc0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
16bd0 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
16be0 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
16bf0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
16c00 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
16c10 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
16c20 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
16c30 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
16c40 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
16c50 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
16c60 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
16c70 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
16c80 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
16c90 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
16ca0 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
16cb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16cc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
16ce0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
16cf0 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
16d00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16d10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16d20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16d30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16d40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
16d50 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
16d60 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
16d70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16d80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16d90 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
16da0 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
16db0 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
16dc0 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
16dd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16de0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16df0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16e00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
16e10 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
16e20 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
16e30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16e40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16e50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16e60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16e70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
16e80 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
16e90 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
16ea0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
16eb0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16ec0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
16ed0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
16ee0 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
16ef0 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
16f00 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
16f10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16f20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16f30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16f40 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
16f50 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
16f60 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
16f70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16f80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16f90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16fa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16fb0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
16fc0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
16fd0 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
16fe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16ff0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
17000 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
17010 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
17020 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
17030 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
17040 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
17050 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
17060 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17070 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17080 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17090 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
170a0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
170b0 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", 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 2c 20 45  rt(SQLITE_DLL, E
17110 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17120 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
17130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17150 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17160 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
17170 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69  _config_int_refi
17180 6e 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  nt(IntPtr db, SQ
17190 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
171a0 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
171b0 65 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c  e, ref int resul
171c0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
171d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
171e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
171f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17200 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17210 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17230 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17240 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17250 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17260 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17270 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17280 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
17290 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
172a0 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
172b0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
172c0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
172d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
172e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
172f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17300 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17310 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17320 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17330 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17340 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17350 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17360 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17370 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17380 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17390 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72  db_handle(IntPtr
173a0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
173b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
173c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
173d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
173e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
173f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17400 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17410 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17420 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17430 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17440 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17450 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17460 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17470 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d  te3_db_release_m
17480 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29  emory(IntPtr db)
17490 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
174a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
174b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
174c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
174d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
174e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
174f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17540 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17550 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
17560 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
17570 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
17580 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17590 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
175a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
175b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
175c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
175d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
175e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
175f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17600 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17610 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17620 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17630 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  int sqlite3_db_r
17640 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64  eadonly(IntPtr d
17650 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65  b, IntPtr dbName
17660 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17670 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17680 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17690 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
176a0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
176b0 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
176c0 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  me", CallingConv
176d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
176e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
176f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
17700 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17710 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
17720 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
17730 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64  ilename")]..#end
17740 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17750 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17760 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
17770 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28  _filename_bytes(
17780 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
17790 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  ] dbName);....#i
177a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
177b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
177c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
177d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
177e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
177f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17800 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17810 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17820 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17830 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17840 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17850 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
17860 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
17870 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
17880 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17890 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
178a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
178b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
178c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
178d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
178e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
178f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17900 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17910 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17920 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17930 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
17940 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
17950 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
17960 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
17970 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
17980 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72  ntPtr pvParam, r
17990 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ef IntPtr errMsg
179a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
179b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
179c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
179d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
179e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
179f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17a00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17a10 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17a20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17a30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17a40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17a50 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
17a60 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
17a70 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  y(int nBytes);..
17a80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17a90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17aa0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17ab0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17ac0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17ad0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17ae0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17af0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17b00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17b10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17b20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17b30 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67  rn int sqlite3_g
17b40 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e  et_autocommit(In
17b50 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
17b60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17b70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17b80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17b90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17ba0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17bb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17bc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17bd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17be0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17bf0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17c00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17c10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
17c20 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72  lite3_extended_r
17c30 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50  esult_codes(IntP
17c40 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66  tr db, int onoff
17c50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17c60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17c70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17c80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17c90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17ca0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17cb0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17cc0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17cd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17ce0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17cf0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17d00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17d10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
17d20 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62  rrcode(IntPtr db
17d30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17d70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17d80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17d90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17da0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17db0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17dc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17de0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
17df0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
17e00 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
17e10 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
17e20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17e30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17e40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17e50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17e60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17e70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17e80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17e90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17ea0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17eb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17ec0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17ed0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
17ee0 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f  rrstr(SQLiteErro
17ef0 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e  rCode rc); /* 3.
17f00 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20  7.15+ */....    
17f10 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
17f20 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76  _log() takes a v
17f30 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
17f40 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
17f50 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
17f60 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
17f70 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
17f80 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77   calls.  For now
17f90 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78  , we are only ex
17fa0 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20  posing a single 
17fb0 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20  string, and..   
17fc0 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68   // depend on th
17fd0 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d  e caller to form
17fe0 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a  at the string...
17ff0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18000 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18010 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18020 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18030 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18050 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18060 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18070 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18080 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18090 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
180a0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f   void sqlite3_lo
180b0 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  g(SQLiteErrorCod
180c0 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65  e iErrCode, byte
180d0 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a  [] zFormat);....
180e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
180f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18100 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18110 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18120 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18130 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18140 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18150 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18160 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18170 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18180 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18190 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
181a0 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
181b0 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c  ntrol(IntPtr db,
181c0 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c   byte[] zDbName,
181d0 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20   int op, IntPtr 
181e0 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pArg);....#if !P
181f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18200 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18210 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18220 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18230 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18240 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18250 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18260 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18270 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18280 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18290 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
182a0 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  r sqlite3_backup
182b0 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73  _init(IntPtr des
182c0 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73  tDb, byte[] zDes
182d0 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f  tName, IntPtr so
182e0 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a  urceDb, byte[] z
182f0 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  SourceName);....
18300 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18310 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18320 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18330 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18340 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18350 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18360 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18370 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18380 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18390 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
183a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
183b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
183c0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
183d0 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b  step(IntPtr back
183e0 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d  up, int nPage);.
183f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18400 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18410 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18420 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18430 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18440 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18450 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18460 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18470 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18480 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18490 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
184a0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
184b0 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67  backup_remaining
184c0 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
184d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
184e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
184f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18500 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18510 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18520 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18530 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18540 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18550 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18560 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18570 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18580 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
18590 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e  _backup_pagecoun
185a0 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  t(IntPtr backup)
185b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
185c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
185d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
185e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
185f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18600 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18610 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18620 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18630 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18640 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18650 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18660 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
18670 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
18680 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  ob_close(IntPtr 
18690 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  blob);....#if !P
186a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
186b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
186c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
186d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
186e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
186f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18700 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18710 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18720 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18730 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18740 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
18750 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65  qlite3_blob_byte
18760 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  s(IntPtr blob);.
18770 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18780 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18790 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
187a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
187b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
187c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
187d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
187e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
187f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18800 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18810 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18820 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
18830 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
18840 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c  _open(IntPtr db,
18850 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
18860 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
18870 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
18880 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20  long rowId, int 
18890 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74  flags, ref IntPt
188a0 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23  r ptrBlob);....#
188b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
188c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
188d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
188e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
188f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18900 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18910 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18920 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18930 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18940 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18950 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18960 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18970 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61  sqlite3_blob_rea
18980 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  d(IntPtr blob, [
18990 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
189a0 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
189b0 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
189c0 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
189d0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
189e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
189f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18a00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18a10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18a20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18a30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18a40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18a50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18a60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18a70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18a80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18a90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18aa0 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e  ite3_blob_reopen
18ab0 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f  (IntPtr blob, lo
18ac0 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69  ng rowId);....#i
18ad0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18ae0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18af0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18b00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18b10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18b20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18b30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18b40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18b50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18b60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18b70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18b80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18b90 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74  qlite3_blob_writ
18ba0 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  e(IntPtr blob, [
18bb0 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
18bc0 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
18bd0 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
18be0 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
18bf0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
18c00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18c10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18c20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18c30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18c40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18c50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18c60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18c70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18c80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18c90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18ca0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
18cb0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
18cc0 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
18cd0 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  b(IntPtr db, Int
18ce0 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69  Ptr zSQL);....#i
18cf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18d00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18d10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18d20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18d30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18d40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18d50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18d70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18d80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18d90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
18da0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70  ntPtr sqlite3_mp
18db0 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72  rintf(IntPtr for
18dc0 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b  mat, __arglist);
18dd0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
18de0 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74  ....    // SQLit
18df0 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74  e API calls that
18e00 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79   are provided by
18e10 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78   "well-known" ex
18e20 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61  tensions that ma
18e30 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d  y be statically.
18e40 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77  .    // linked w
18e50 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
18e60 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ore native libra
18e70 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20  ry currently in 
18e80 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  use...    #regio
18e90 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69  n extension sqli
18ea0 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69  te api calls..#i
18eb0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
18ec0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
18ed0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18ee0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18ef0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18f00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18f10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
18f30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
18f40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18f50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18f60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18f70 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18f80 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
18f90 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
18fa0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
18fb0 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71  Ptr name, ref sq
18fc0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
18fd0 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  ule, IntPtr pCli
18fe0 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f  entData, xDestro
18ff0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
19000 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19010 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19020 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19050 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19060 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19070 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19090 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
190a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
190b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
190c0 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75  te3_dispose_modu
190d0 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  le(IntPtr pModul
190e0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
190f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
19100 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19150 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71  ..    #region sq
19160 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69  lite interop api
19170 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d   calls (.NET Com
19180 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f  pact Framework o
19190 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f  nly)..#if PLATFO
191a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
191b0 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
191c0 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c  TANDARD..    [Dl
191d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
191e0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
191f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19200 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61   void sqlite3_la
19210 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f  st_insert_rowid_
19220 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
19230 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49  b, ref long rowI
19240 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
19250 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19260 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19270 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
19280 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
19290 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28  ry_used_interop(
192a0 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b  ref long bytes);
192b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
192c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
192d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
192e0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
192f0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
19300 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
19310 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
19320 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
19330 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19340 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19350 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19360 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19370 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19380 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
19390 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
193a0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
193b0 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
193c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
193d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
193e0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
193f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19400 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19410 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19420 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
19430 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
19440 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
19450 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19460 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19470 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
19480 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19490 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20  4_interop")]..  
194a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
194b0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
194c0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
194d0 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74  _bind_uint64_int
194e0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
194f0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
19500 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
19510 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19520 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19530 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19540 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
19550 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
19560 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
19570 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
19580 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
19590 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
195a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
195b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
195c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
195d0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
195e0 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74  column_int64_int
195f0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19600 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
19610 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
19620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19630 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19640 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19650 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
19660 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
19670 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
19680 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  r p, ref double 
19690 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
196a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
196b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
196c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
196d0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
196e0 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
196f0 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
19700 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
19710 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19730 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19740 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
19750 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
19760 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
19770 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
19780 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
19790 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
197a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
197b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
197c0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
197d0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
197e0 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
197f0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
19800 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
19810 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19820 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19830 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19840 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19850 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
19860 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
19870 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
19880 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
19890 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74  IntPtr name, Int
198a0 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74  Ptr pModule, int
198b0 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61   iVersion, xCrea
198c0 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  te xCreate,..   
198d0 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43       xConnect xC
198e0 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64  onnect, xBestInd
198f0 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78  ex xBestIndex, x
19900 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
19910 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20  onnect,..       
19920 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
19930 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c  oy, xOpen xOpen,
19940 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20   xClose xClose, 
19950 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  xFilter xFilter,
19960 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74 20  ..        xNext 
19970 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66  xNext, xEof xEof
19980 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  , xColumn xColum
19990 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  n, xRowId xRowId
199a0 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  , xUpdate xUpdat
199b0 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67  e,..        xBeg
199c0 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63  in xBegin, xSync
199d0 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20   xSync, xCommit 
199e0 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61  xCommit, xRollba
199f0 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20  ck xRollback,.. 
19a00 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
19a10 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
19a20 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  on, xRename xRen
19a30 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20  ame, xSavepoint 
19a40 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20  xSavepoint,..   
19a50 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78 52       xRelease xR
19a60 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63  elease, xRollbac
19a70 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c  kTo xRollbackTo,
19a80 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
19a90 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ata,..        xD
19aa0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65  estroyModule xDe
19ab0 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23  stroyModule);..#
19ac0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c  endif..    // PL
19ad0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19ae0 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
19af0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
19b00 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
19b10 20 20 20 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 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19b60 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
19b70 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a  tive Delegates..
19b80 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
19b90 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
19ba0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19bb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
19bc0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
19bd0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
19be0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19bf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19c00 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
19c10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19c20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
19c30 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
19c40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
19c50 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ux,..        int
19c60 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
19c70 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
19c80 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
19c90 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
19ca0 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
19cb0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
19cc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19d10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19d20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19d30 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
19d40 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
19d50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
19d60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
19d70 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
19d80 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
19d90 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d  rCode xConnect(.
19da0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19db0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
19dc0 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
19dd0 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
19de0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
19df0 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
19e00 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
19e10 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
19e20 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
19e30 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
19e90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19ea0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
19eb0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
19ec0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
19ed0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19ee0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
19ef0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
19f00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
19f10 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
19f20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
19f30 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
19f40 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a  pIndex..    );..
19f50 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
19f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
19fb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19fc0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
19fd0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
19fe0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
19ff0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a000 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1a010 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1a020 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f  ErrorCode xDisco
1a030 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1a040 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1a050 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a0b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a0c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a0d0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a0e0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a0f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a100 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a110 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a120 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a130 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
1a140 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1a150 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1a1b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a1c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a1d0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1a1e0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1a1f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1a200 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1a210 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1a220 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1a230 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
1a240 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1a250 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
1a260 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
1a270 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1a2d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a2e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a2f0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a300 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a310 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a320 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a330 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a340 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a350 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
1a360 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
1a370 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1a3d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a3e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a3f0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1a400 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1a410 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1a420 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1a430 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1a440 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1a450 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
1a460 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1a470 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  sor,..        in
1a480 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
1a490 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72     IntPtr idxStr
1a4a0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1a4b0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1a4c0 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29  tPtr argv..    )
1a4d0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1a530 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a540 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1a550 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1a560 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1a570 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1a590 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1a5a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65  iteErrorCode xNe
1a5b0 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  xt(..        Int
1a5c0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
1a5d0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a620 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1a630 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a640 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1a650 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1a660 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1a670 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a680 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1a690 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
1a6a0 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
1a6b0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
1a6c0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a720 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a730 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a740 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a750 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a770 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a780 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a790 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1a7a0 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
1a7b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
1a7c0 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49  rsor,..        I
1a7d0 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
1a7e0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64  .        int ind
1a7f0 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
1a800 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a850 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a860 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a870 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1a880 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1a890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a8a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1a8b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1a8c0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1a8d0 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20  rCode xRowId(.. 
1a8e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1a8f0 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
1a900 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
1a910 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1a970 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1a980 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a990 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1a9a0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1a9b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a9c0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1a9d0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1a9e0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1a9f0 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  e xUpdate(..    
1aa00 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1aa10 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1aa20 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1aa30 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1aa40 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
1aa50 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
1aa60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1aab0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1aac0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1aad0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1aae0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1aaf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ab00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1ab10 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1ab20 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1ab30 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
1ab40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1ab50 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1ab60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1abb0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1abc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1abd0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1abe0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1abf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ac00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1ac10 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1ac20 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1ac30 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
1ac40 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1ac50 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1ac60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1acb0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1acc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1acd0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1ace0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1acf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ad00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1ad10 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1ad20 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1ad30 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d  orCode xCommit(.
1ad40 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1ad50 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1ad60 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1adb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1adc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1add0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1ade0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1adf0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1ae00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1ae10 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1ae20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1ae30 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
1ae40 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ck(..        Int
1ae50 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
1ae60 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aeb0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1aec0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1aed0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1aee0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1aef0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1af00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1af10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1af20 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
1af30 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d   xFindFunction(.
1af40 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1af50 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1af60 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20  int nArg,..     
1af70 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c     IntPtr zName,
1af80 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53 51  ..        ref SQ
1af90 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c  LiteCallback cal
1afa0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1afb0 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65 72  ref IntPtr pUser
1afc0 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Data..    );....
1afd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b020 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b030 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b040 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1b050 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1b060 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1b070 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1b080 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1b090 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1b0a0 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28  rorCode xRename(
1b0b0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1b0c0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1b0d0 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20   IntPtr zNew..  
1b0e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1b140 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b150 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b160 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1b170 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1b180 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b190 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b1a0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1b1b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b1c0 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
1b1d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1b1e0 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
1b1f0 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
1b200 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b250 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1b260 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b270 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1b280 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1b290 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1b2a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b2b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1b2c0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1b2d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
1b2e0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
1b2f0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1b300 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
1b310 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
1b320 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1b380 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b390 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1b3a0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1b3b0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1b3c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1b3d0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1b3e0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1b3f0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
1b400 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1b410 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1b420 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1b430 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
1b440 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b490 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b4a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b4b0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b4c0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b4d0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b4e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b4f0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b500 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44  delegate void xD
1b510 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74  estroyModule(Int
1b520 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29  Ptr pClientData)
1b530 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
1b540 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1b550 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b5a0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
1b5b0 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23  ve Structures..#
1b5c0 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
1b5d0 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53  AL_TABLE..    [S
1b5e0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1b5f0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1b600 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1b610 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1b620 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a  _module..    {..
1b630 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1b640 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
1b650 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 72        public xCr
1b660 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20  eate xCreate;.. 
1b670 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
1b680 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b  onnect xConnect;
1b690 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b6a0 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73   xBestIndex xBes
1b6b0 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  tIndex;..       
1b6c0 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e   public xDisconn
1b6d0 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b  ect xDisconnect;
1b6e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b6f0 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
1b700 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  oy;..        pub
1b710 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b  lic xOpen xOpen;
1b720 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b730 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d   xClose xClose;.
1b740 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1b750 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
1b760 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b770 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20   xNext xNext;.. 
1b780 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 45         public xE
1b790 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20  of xEof;..      
1b7a0 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e    public xColumn
1b7b0 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   xColumn;..     
1b7c0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64     public xRowId
1b7d0 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20   xRowId;..      
1b7e0 20 20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65    public xUpdate
1b7f0 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20   xUpdate;..     
1b800 20 20 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e     public xBegin
1b810 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20   xBegin;..      
1b820 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78    public xSync x
1b830 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70  Sync;..        p
1b840 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
1b850 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
1b860 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
1b870 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20   xRollback;..   
1b880 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e       public xFin
1b890 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
1b8a0 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  unction;..      
1b8b0 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65    public xRename
1b8c0 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20   xRename;..     
1b8d0 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64     /* The method
1b8e0 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76  s above are in v
1b8f0 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20  ersion 1 of the 
1b900 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
1b910 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63           * objec
1b920 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20  t.  Those below 
1b930 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  are for version 
1b940 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a  2 and greater. *
1b950 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1b960 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  c xSavepoint xSa
1b970 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20  vepoint;..      
1b980 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73    public xReleas
1b990 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20  e xRelease;..   
1b9a0 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
1b9b0 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63  lbackTo xRollbac
1b9c0 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  kTo;..    }.... 
1b9d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ba20 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1ba30 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1ba40 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1ba50 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1ba60 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20   sqlite3_vtab.. 
1ba70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1ba80 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64  blic IntPtr pMod
1ba90 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ule;..        pu
1baa0 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f  blic int nRef; /
1bab0 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44  * NO LONGER USED
1bac0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1bad0 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d  lic IntPtr zErrM
1bae0 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  sg;..    }....  
1baf0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bb40 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1bb50 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1bb60 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1bb70 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1bb80 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
1bb90 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sor..    {..    
1bba0 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1bbb0 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d  r pVTab;..    }.
1bbc0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc10 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
1bc20 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
1bc30 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
1bc40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bc50 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
1bc60 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  ex_constraint.. 
1bc70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1bc80 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
1bc90 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  ex_constraint(..
1bca0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1bcb0 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
1bcc0 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  t constraint..  
1bcd0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1bce0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1bcf0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1bd00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
1bd10 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c  nstraint != null
1bd20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1bd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bd40 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73    iColumn = cons
1bd50 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d  traint.iColumn;.
1bd60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bd70 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74   op = constraint
1bd80 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .op;..          
1bd90 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63        usable = c
1bda0 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65  onstraint.usable
1bdb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bdc0 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d     iTermOffset =
1bdd0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72   constraint.iTer
1bde0 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  mOffset;..      
1bdf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1be00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1be60 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
1be70 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
1be80 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
1be90 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b  ConstraintOp op;
1bea0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1beb0 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20   byte usable;.. 
1bec0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1bed0 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t iTermOffset;..
1bee0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1bef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1bf40 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
1bf50 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
1bf60 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
1bf70 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
1bf80 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
1bf90 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1bfa0 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
1bfb0 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a  index_orderby(..
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1bfd0 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f  teIndexOrderBy o
1bfe0 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20  rderBy..        
1bff0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1c000 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
1c010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c020 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20      if (orderBy 
1c030 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1c040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c050 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
1c060 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75   = orderBy.iColu
1c070 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
1c080 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65       desc = orde
1c090 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20  rBy.desc;..     
1c0a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c0b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c110 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
1c120 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20  lumn; /* Column 
1c130 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20  number */..     
1c140 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 64     public byte d
1c150 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66  esc;   /* True f
1c160 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20  or DESC.  False 
1c170 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20  for ASC. */..   
1c180 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1c1e0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1c1f0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1c200 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c210 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1c220 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1c230 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20  _usage..    {.. 
1c240 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
1c250 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
1c260 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20  traint_usage(.. 
1c270 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1c280 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
1c290 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  Usage constraint
1c2a0 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20  Usage..         
1c2b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
1c2c0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
1c2d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c2e0 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
1c2f0 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d  tUsage != null).
1c300 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1c310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c320 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73  argvIndex = cons
1c330 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76  traintUsage.argv
1c340 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
1c350 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63          omit = c
1c360 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f  onstraintUsage.o
1c370 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mit;..          
1c380 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1c390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1c3f0 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65  lic int argvInde
1c400 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e  x; /* if >0, con
1c410 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20  straint is part 
1c420 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74  of argv to xFilt
1c430 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  er */..        p
1c440 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b  ublic byte omit;
1c450 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63       /* Do not c
1c460 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74  ode a test for t
1c470 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a  his constraint *
1c480 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
1c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1c4e0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1c4f0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1c500 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1c510 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1c520 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
1c530 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1c540 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20   /* Inputs */.. 
1c550 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1c560 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f  t nConstraint; /
1c570 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72  * Number of entr
1c580 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69  ies in aConstrai
1c590 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  nt */..        p
1c5a0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f  ublic IntPtr aCo
1c5b0 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20  nstraint;..     
1c5c0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f     public int nO
1c5d0 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75  rderBy;    /* Nu
1c5e0 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
1c5f0 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a  in aOrderBy */..
1c600 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
1c610 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d  ntPtr aOrderBy;.
1c620 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70  .        /* Outp
1c630 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
1c640 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
1c650 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d  onstraintUsage;.
1c660 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c670 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
1c680 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
1c690 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
1c6a0 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20   the index */.. 
1c6b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1c6c0 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20  ring idxStr;    
1c6d0 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70      /* String, p
1c6e0 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64  ossibly obtained
1c6f0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
1c700 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lloc */..       
1c710 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64   public int need
1c720 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a  ToFreeIdxStr; /*
1c730 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73 69   Free idxStr usi
1c740 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ng sqlite3_free(
1c750 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20  ) if true */..  
1c760 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1c770 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
1c780 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
1c790 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
1c7a0 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
1c7b0 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
1c7c0 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
1c7d0 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
1c7e0 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
1c7f0 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
1c800 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65     public long e
1c810 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20  stimatedRows;   
1c820 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d  /* Estimated num
1c830 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75  ber of rows retu
1c840 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  rned */..       
1c850 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
1c860 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67  dexFlags idxFlag
1c870 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51  s; /* Mask of SQ
1c880 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f  LITE_INDEX_SCAN_
1c890 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20  * flags */..    
1c8a0 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20      public long 
1c8b0 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20  colUsed;        
1c8c0 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20   /* Input: Mask 
1c8d0 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20  of columns used 
1c8e0 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d  by statement */.
1c8f0 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
1c900 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c910 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
1c920 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
1c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c970 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
1c980 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  n .NET Compact F
1c990 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20  ramework (only) 
1c9a0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43  CriticalHandle C
1c9b0 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f  lass..#if PLATFO
1c9c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c9d0 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
1c9e0 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
1c9f0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
1ca00 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
1ca10 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
1ca20 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
1ca30 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
1ca40 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
1ca50 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
1ca60 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
1ca70 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
1ca80 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
1ca90 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
1caa0 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
1cab0 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
1cac0 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
1cad0 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
1cae0 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
1caf0 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
1cb00 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
1cb10 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
1cb20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
1cb30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
1cb40 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
1cb50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
1cb60 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
1cb70 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
1cb80 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
1cb90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cba0 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
1cbb0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
1cbc0 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
1cbd0 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
1cbe0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1cbf0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
1cc00 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
1cc10 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
1cc20 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
1cc30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
1cc40 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
1cc50 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1cc60 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
1cc70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
1cc80 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
1cc90 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
1cca0 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
1ccb0 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
1ccc0 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
1ccd0 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
1cce0 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
1ccf0 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
1cd00 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
1cd10 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
1cd20 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
1cd30 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
1cd40 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
1cd50 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
1cd60 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
1cd70 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
1cd80 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
1cd90 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
1cda0 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
1cdb0 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
1cdc0 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
1cdd0 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
1cde0 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
1cdf0 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
1ce00 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
1ce10 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
1ce20 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
1ce30 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
1ce40 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
1ce50 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
1ce60 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ceb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1cec0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1ced0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1cee0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
1cef0 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
1cf00 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
1cf10 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
1cf20 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
1cf30 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
1cf40 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
1cf50 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
1cf60 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
1cf70 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
1cf80 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1cf90 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
1cfa0 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
1cfb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1cfc0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1cfd0 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
1cfe0 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
1cff0 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
1d000 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1d010 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1d020 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
1d030 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
1d040 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
1d050 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
1d060 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
1d070 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
1d080 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1d090 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1d0a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1d0b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d100 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1d110 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d120 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1d130 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
1d140 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1d150 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
1d160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1d1c0 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
1d1d0 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
1d1e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d230 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1d240 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1d250 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1d260 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1d270 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
1d280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1d290 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
1d2a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1d2b0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1d2c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1d2e0 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
1d2f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1d300 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d320 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
1d330 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1d340 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1d350 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1d360 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1d370 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
1d380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
1d3e0 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
1d3f0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
1d400 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
1d410 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
1d420 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
1d430 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
1d440 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1d450 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d460 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1d470 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1d480 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1d490 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d4a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
1d4b0 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
1d4c0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1d4d0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
1d4e0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
1d4f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1d500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1d560 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
1d570 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
1d580 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
1d590 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
1d5a0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1d5b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
1d5c0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1d5d0 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
1d5e0 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
1d5f0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1d600 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
1d610 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
1d620 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
1d630 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1d640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d690 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1d6a0 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1d6b0 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1d6c0 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1d6d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1d6e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d6f0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1d700 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1d710 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1d720 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d730 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
1d740 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
1d750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1d760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
1d770 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1d780 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
1d790 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d7a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1d7b0 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
1d7c0 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
1d7d0 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
1d7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7f0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
1d800 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
1d810 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
1d820 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
1d830 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
1d840 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1d850 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1d860 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
1d870 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
1d880 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
1d890 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1d8a0 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
1d8b0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1d8c0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1d8d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1d8e0 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
1d8f0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
1d900 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
1d910 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
1d920 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1d930 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1d940 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1d950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1d960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d970 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
1d980 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
1d990 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1d9a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1d9b0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1d9c0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1d9d0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9f0 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
1da00 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
1da10 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
1da20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1da30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1da40 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1da60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1da70 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
1da80 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1da90 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1daa0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1dab0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1dac0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
1dad0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1dae0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1daf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1db00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db10 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1db20 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1db30 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
1db40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1db50 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1db60 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1db70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1db80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1db90 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1dba0 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1dbb0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1dbc0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1dbd0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
1dbe0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
1dbf0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
1dc00 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1dc30 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1dc40 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
1dc50 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1dc60 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1dc70 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1dc80 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
1dc90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1dca0 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1dcb0 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
1dcc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1dcd0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1dce0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1dcf0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1dd00 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1dd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd30 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1dd40 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
1dd50 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1dd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dd70 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1dd80 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1dd90 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1ddb0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
1ddc0 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
1ddd0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddf0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
1de00 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1de10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1de30 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1de40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1de50 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1de60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1de70 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
1de80 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
1de90 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1dea0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1deb0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1dec0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1ded0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1def0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df00 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
1df10 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
1df20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1df30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1df40 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1df50 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1df60 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
1df70 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1df80 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1df90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1dfa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1dfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1dff0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1e000 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1e010 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
1e020 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1e030 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e040 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1e050 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
1e060 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ata.connectionCo
1e070 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
1e080 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1e090 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e0e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
1e0f0 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
1e100 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e110 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1e120 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1e130 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e140 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1e150 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1e160 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1e170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e190 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
1e1a0 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
1e1b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1e1c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e1d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e1e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1e230 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1e240 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
1e250 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
1e260 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
1e270 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1e280 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1e290 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1e2b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1e2c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1e2d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e2f0 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
1e300 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
1e310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e320 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1e330 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e340 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e390 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1e3a0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1e3b0 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
1e3c0 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
1e3d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1e3e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1e400 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1e410 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1e420 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e430 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
1e440 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
1e450 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1e460 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1e470 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
1e480 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e4e0 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
1e4f0 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1e500 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
1e510 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
1e520 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
1e530 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
1e540 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
1e550 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
1e560 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
1e570 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
1e580 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
1e590 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
1e5a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e5b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1e5c0 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
1e5d0 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
1e5e0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
1e5f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1e600 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e650 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
1e660 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1e670 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
1e680 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e6d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1e6e0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
1e6f0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
1e700 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1e710 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
1e720 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e730 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
1e740 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1e750 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1e760 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e770 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1e780 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
1e790 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1e7a0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1e7b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e7c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e7d0 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
1e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1e800 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e810 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1e820 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e830 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e880 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
1e890 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
1e8a0 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
1e8b0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1e8c0 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
1e8d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1e8e0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
1e8f0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1e900 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e910 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1e920 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1e930 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1e940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e950 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
1e960 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
1e970 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1e980 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
1e990 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e9a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1e9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ea00 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
1ea10 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
1ea20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1ea30 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
1ea40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1ea50 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1ea60 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
1ea70 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
1ea80 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
1ea90 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
1eaa0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1eab0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1eb10 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
1eb20 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
1eb30 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
1eb40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1eb50 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1eb60 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
1eb70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1eb80 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1eb90 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
1eba0 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
1ebb0 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
1ebc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ebd0 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
1ebe0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
1ebf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ec00 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1ec10 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1ec20 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1ec30 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1ec40 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
1ec50 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
1ec60 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
1ec70 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1ec80 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eca0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1ecb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ecc0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1ecd0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
1ece0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
1ecf0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed10 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1ed20 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1ed30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed40 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
1ed50 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20  tatement: {0}", 
1ed60 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
1ed70 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1ed80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1ed90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1eda0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1edb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1edc0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1edd0 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
1ede0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1edf0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
1ee00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
1ee30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ee60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1ee70 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
1ee80 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
1ee90 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
1eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eeb0 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
1eec0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1eed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1eee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1eef0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
1ef00 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1ef20 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1ef30 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
1ef40 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
1ef50 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
1ef60 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1ef70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1ef80 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1ef90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1efa0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1efb0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1efc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1efd0 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
1efe0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1eff0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1f000 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1f010 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
1f020 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1f030 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1f040 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1f050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f060 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1f070 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f080 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1f090 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1f0a0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1f0b0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0d0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1f0e0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f100 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1f110 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
1f120 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1f130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f140 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1f150 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1f160 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1f170 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f180 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1f190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f1b0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1f1c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1f1d0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1f1e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1f1f0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1f200 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1f220 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1f230 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1f240 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1f260 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1f270 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1f280 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1f290 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1f2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f2b0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1f2c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1f2d0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1f2e0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1f2f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f340 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1f350 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1f360 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1f370 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1f380 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f390 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1f3a0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1f3b0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
1f3c0 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1f3d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1f3e0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1f3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f430 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f440 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1f450 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
1f460 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1f470 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1f480 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1f490 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f4a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1f4b0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1f4c0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1f4d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1f4e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f4f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f500 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
1f510 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1f520 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1f530 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1f540 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1f550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1f5a0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1f5b0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1f5c0 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
1f5d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1f5e0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1f5f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f600 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1f610 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1f620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1f630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f640 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
1f650 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
1f660 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1f670 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1f680 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1f690 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1f6f0 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
1f700 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
1f710 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
1f720 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
1f730 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
1f740 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
1f750 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
1f760 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
1f770 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
1f780 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
1f790 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
1f7a0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1f7b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f7c0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1f7d0 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
1f7e0 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
1f7f0 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
1f800 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f850 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f860 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
1f870 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
1f880 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
1f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f8e0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1f8f0 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
1f900 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
1f910 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
1f920 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
1f930 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f940 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
1f950 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1f960 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1f970 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1f990 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
1f9a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1f9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f9d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
1f9e0 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fa10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1fa20 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1fa30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1fa40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1fa90 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1faa0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
1fab0 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
1fac0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
1fad0 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
1fae0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1faf0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1fb00 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1fb10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fb20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1fb30 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1fb40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1fb50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1fb60 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
1fb70 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
1fb80 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
1fb90 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
1fba0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fbb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1fbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1fc10 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
1fc20 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
1fc30 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
1fc40 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
1fc50 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
1fc60 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1fc70 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
1fc80 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
1fc90 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
1fca0 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
1fcb0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1fcc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1fd10 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
1fd20 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
1fd30 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1fd40 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1fd50 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1fd60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1fd70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fd80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1fda0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
1fdb0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
1fdc0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
1fdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1fde0 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
1fdf0 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
1fe00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1fe10 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
1fe20 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe40 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
1fe50 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
1fe60 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
1fe70 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1fe80 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1fe90 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1fea0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1feb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1fec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fed0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1fee0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
1fef0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
1ff00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff10 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
1ff20 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
1ff30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ff40 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
1ff50 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c  hBackup: {0}", l
1ff60 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
1ff70 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1ff80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1ffa0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1ffb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ffc0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1ffd0 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
1ffe0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1fff0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
20000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20020 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
20030 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
20040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20050 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20060 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
20070 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
20080 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ckup(cnn, handle
20090 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
200a0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
200b0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
200c0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
200d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
200e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
200f0 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
20100 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
20110 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
20120 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
20130 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
20140 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
20150 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
20160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20170 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
20180 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
20190 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
201a0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
201b0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
201c0 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
201d0 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
201e0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
201f0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
20200 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
20210 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
20220 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
20230 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
20240 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
20250 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
20260 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
20270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20280 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
20290 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
202a0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
202b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
202c0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
202d0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
202e0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
202f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
20300 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
20310 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
20320 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
20330 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
20340 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
20350 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
20360 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20370 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
20380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
203a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
203b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
203c0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
203d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
203e0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
203f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20410 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
20420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20430 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20450 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
20460 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
20470 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20480 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
20490 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
204a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
204b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
204c0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
204d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
204e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
204f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20530 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
20540 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
20550 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
20560 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
20570 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20580 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
20590 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
205a0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
205b0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
205c0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
205d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
205e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20620 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
20630 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
20640 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
20650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20660 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
20670 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
20680 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20690 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
206a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
206b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
206c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
206d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
206e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
206f0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
20700 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
20710 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
20720 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
20730 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20740 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20780 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
20790 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
207a0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
207b0 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
207c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
207d0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
207e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
207f0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
20800 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
20810 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
20820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20830 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
20840 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
20850 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20860 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
20870 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
20880 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
20890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
208e0 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48  gion SQLiteBlobH
208f0 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
20900 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
20910 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
20920 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
20930 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65  SQLite blob obje
20940 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
20950 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
20960 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
20970 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
20980 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
20990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
209a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
209b0 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
209c0 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
209d0 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
209e0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
209f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20a40 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
20a50 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
20a60 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
20a70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20ac0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
20ad0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
20ae0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
20af0 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  r(SQLiteBlobHand
20b00 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  le blob)..      
20b10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20b20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c   if (blob != nul
20b30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20b40 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
20b50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20b70 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e    lock (blob.syn
20b80 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ba0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20bb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c         return bl
20bc0 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ob.handle;..    
20bd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20be0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20bf0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20c00 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
20c10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
20c20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20c70 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
20c80 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
20c90 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
20ca0 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
20cb0 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  Ptr blob)..     
20cc0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
20cd0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
20ce0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20cf0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
20d00 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
20d10 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
20d20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
20d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
20d40 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
20d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d60 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b  SetHandle(blob);
20d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
20d80 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
20d90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20de0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
20df0 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
20e00 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
20e10 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
20e20 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
20e30 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
20e40 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
20e50 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
20e60 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
20e70 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
20e80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20e90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20ef0 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
20f00 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
20f10 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
20f20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20f30 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
20f40 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
20f50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20f60 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
20f70 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
20f80 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
20f90 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
20fc0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
20fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20fe0 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
20ff0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
21000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21010 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
21020 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20  .CloseBlob(cnn, 
21030 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
21040 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
21050 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
21060 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
21070 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
21080 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210a0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
210b0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
210c0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
210d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210e0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
210f0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
21100 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
21110 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
21120 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f  seBlob: {0}", lo
21130 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
21140 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
21150 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
21170 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
21180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21190 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
211a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
211b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
211c0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
211d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
211e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211f0 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
21200 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21230 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
21240 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
21250 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
21260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21270 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
21280 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
21290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
212a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
212b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
212c0 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
212d0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
212e0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
212f0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
21300 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
21310 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
21320 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
21330 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21340 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
21350 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
21360 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
21370 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
21380 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
21390 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
213a0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
213b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
213c0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
213d0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
213e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
213f0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
21400 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
21410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21420 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
21430 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
21450 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
21460 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
21470 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
21480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21490 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
214a0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214c0 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
214d0 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  ob: {0}, excepti
214e0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
214f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21500 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
21510 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
21520 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
21530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21540 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
21550 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21560 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
21570 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21580 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21590 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
215a0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
215b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
215c0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
215d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
215e0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
215f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21600 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21610 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
21620 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
21630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21640 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
21650 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
21660 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
21670 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
21680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21690 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
216a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
216b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
216c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
21700 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
21710 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21720 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
21730 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
21740 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
21750 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
21760 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
21770 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
21780 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
21790 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
217a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
217b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
217f0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
21800 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
21810 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
21820 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
21830 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
21840 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
21850 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
21870 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
21880 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
21890 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
218a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
218b0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
218c0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
218d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
218e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
218f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21900 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21950 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
21960 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
21970 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
21980 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
21990 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
219a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
219b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
219c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
219d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
219e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
219f0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
21a00 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
21a10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
21a20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
21a30 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
21a40 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..