System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9e217a65032dd550b4bbec3e3c1bf1571383a543:


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 0d 0a 20 20 20 20 20 20 2f  unts;....      /
0a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a90: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0aa0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ab0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0ac0: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0ad0: 73 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  s the read count
0ae0: 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d  s for the runtim
0af0: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
0b00: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
0b10: 6e 67 73 20 76 69 61 20 74 68 65 20 58 4d 4c 20  ngs via the XML 
0b20: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
0b30: 6c 65 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  le.  This inform
0b40: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0d 0a 20  ation is only.. 
0b50: 20 20 20 20 20 2f 2f 2f 20 72 65 63 6f 72 64 65       /// recorde
0b60: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0b70: 69 6e 20 74 68 65 20 22 44 65 62 75 67 22 20 62  in the "Debug" b
0b80: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0b90: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0bb0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0bc0: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0bd0: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 46  g, int> settingF
0be0: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a  ileReadCounts;..
0bf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
0c00: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
0c10: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0c20: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0c70: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
0c80: 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 23  ublic Methods..#
0c90: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
0ca0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0cb0: 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73       /// Creates
0cc0: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20   the dictionary 
0cd0: 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
0ce0: 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f  e read counts fo
0cf0: 72 20 65 61 63 68 20 6f 66 20 74 68 65 0d 0a 20  r each of the.. 
0d00: 20 20 20 20 20 2f 2f 2f 20 72 75 6e 74 69 6d 65       /// runtime
0d10: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
0d20: 65 74 74 69 6e 67 73 2e 20 20 54 68 65 73 65 20  ettings.  These 
0d30: 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73 65 64  numbers are used
0d40: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a   for debugging..
0d50: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 65        /// and te
0d60: 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20 6f  sting purposes o
0d70: 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nly...      /// 
0d80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0d90: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
0da0: 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 53  void InitializeS
0db0: 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73  ettingReadCounts
0dc0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
0dd0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
0de0: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
0df0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0e00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
0e10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
0e20: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
0e30: 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74 69  ists of statisti
0e40: 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e  cs that will con
0e50: 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
0e60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
0e70: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
0e80: 20 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61   each setting va
0e90: 6c 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61  lue has been rea
0ea0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
0eb0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
0ec0: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
0ed0: 65 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c  eadCounts == nul
0ee0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
0ef0: 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61        settingRea
0f00: 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69  dCounts = new Di
0f10: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
0f20: 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20   int>();....    
0f30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
0f40: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
0f50: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0f70: 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43  settingFileReadC
0f80: 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74  ounts = new Dict
0f90: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69  ionary<string, i
0fa0: 6e 74 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  nt>();..        
0fb0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
0fc0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1010: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
1020: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1030: 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68 65  / Increments the
1040: 20 72 65 61 64 20 63 6f 75 6e 74 20 66 6f 72 20   read count for 
1050: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 75  the specified ru
1060: 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74  ntime configurat
1070: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  ion..      /// s
1080: 65 74 74 69 6e 67 2e 20 20 54 68 65 73 65 20 6e  etting.  These n
1090: 75 6d 62 65 72 73 20 61 72 65 20 75 73 65 64 20  umbers are used 
10a0: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 20 61 6e  for debugging an
10b0: 64 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  d testing purpos
10c0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e  es..      /// on
10d0: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
10e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1100: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
1110: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
1120: 74 68 65 20 73 65 74 74 69 6e 67 20 62 65 69 6e  the setting bein
1130: 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  g read...      /
1140: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1150: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1160: 6d 65 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20  me="viaFile">.. 
1170: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
1180: 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  o if the specifi
1190: 65 64 20 73 65 74 74 69 6e 67 20 77 61 73 20 72  ed setting was r
11a0: 65 61 64 20 76 69 61 20 74 68 65 20 63 6f 6e 66  ead via the conf
11b0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
11c0: 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20   /// file...    
11d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
11e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
11f0: 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65  tic void Increme
1200: 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75  ntSettingReadCou
1210: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  nt(..          s
1220: 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20  tring name,..   
1230: 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69 61 46         bool viaF
1240: 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ile..          )
1250: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1260: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
1270: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
1280: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1290: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
12b0: 3a 20 55 70 64 61 74 65 20 73 74 61 74 69 73 74  : Update statist
12c0: 69 63 73 20 66 6f 72 20 74 68 69 73 20 73 65 74  ics for this set
12d0: 74 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20  ting value...   
12e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1300: 28 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20 20  (viaFile)..     
1310: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1330: 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61   (settingFileRea
1340: 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  dCounts != null)
1350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1360: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1380: 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20   count;....     
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a0: 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65   if (settingFile
13b0: 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47 65  ReadCounts.TryGe
13c0: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74  tValue(name, out
13d0: 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20   count))..      
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f0: 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52      settingFileR
1400: 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20  eadCounts[name] 
1410: 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20  = count + 1;..  
1420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1430: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
1440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1450: 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65 52      settingFileR
1460: 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61  eadCounts.Add(na
1470: 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20  me, 1);..       
1480: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1490: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
14b0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
14c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14d0: 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e        if (settin
14e0: 67 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  gReadCounts != n
14f0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1500: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1520: 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20   int count;.... 
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1540: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
1550: 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47 65  ReadCounts.TryGe
1560: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74  tValue(name, out
1570: 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20   count))..      
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43      settingReadC
15a0: 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f  ounts[name] = co
15b0: 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20  unt + 1;..      
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1600: 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d  s.Add(name, 1);.
1610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1620: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1630: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1640: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e   }..      }..#en
1650: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
1660: 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e 64  egion..  }..#end
1670: 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e  if..  #endregion
1680: 0d 0a 0d 0a 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d0: 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
16e0: 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 20   Helper Methods 
16f0: 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
1700: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1710: 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63   /// This static
1720: 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20   class provides 
1730: 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74 68 61  some methods tha
1740: 74 20 61 72 65 20 73 68 61 72 65 64 20 62 65 74  t are shared bet
1750: 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f 20  ween the..  /// 
1760: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  native library p
1770: 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20 6f 74  re-loader and ot
1780: 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20  her classes...  
1790: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17b0: 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72 4d 65  c class HelperMe
17c0: 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20  thods..  {..    
17d0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
17e0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
17f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1800: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b     /// This lock
1810: 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74   is used to prot
1820: 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20 3c  ect the static <
1830: 73 65 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e 6f  see cref="isMono
1840: 22 20 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20 20  " /> field...   
1850: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1860: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1870: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1880: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
1890: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
18a0: 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1900: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1910: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 74        /// This t
1920: 79 70 65 20 69 73 20 6f 6e 6c 79 20 70 72 65 73  ype is only pres
1930: 65 6e 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  ent when running
1940: 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20   on Mono...     
1950: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1960: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
1970: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
1980: 74 72 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d  tring MonoRuntim
1990: 65 54 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75  eType = "Mono.Ru
19a0: 6e 74 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20 20  ntime";....     
19b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1a00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1a10: 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73  .      /// Keeps
1a20: 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65   track of whethe
1a30: 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67  r we are running
1a40: 20 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69   on Mono.  Initi
1a50: 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73  ally null, it is
1a60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20  ..      /// set 
1a70: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
1a80: 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74  ="IsMono" /> met
1a90: 68 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74  hod on its first
1aa0: 20 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69   call.  Later, i
1ab0: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  t..      /// is 
1ac0: 72 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69  returned verbati
1ad0: 6d 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  m by the <see cr
1ae0: 65 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d  ef="IsMono" /> m
1af0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
1b00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1b20: 69 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20  ic bool? isMono 
1b30: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 23  = null;..      #
1b40: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1b50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ba0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
1bb0: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
1bc0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1bd0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
1be0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72  termines whether
1bf0: 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73 73   or not this ass
1c00: 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e 67  embly is running
1c10: 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20   on Mono...     
1c20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
1c40: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
1c50: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
1c60: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
1c70: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
1c80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1c90: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
1ca0: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  te static bool I
1cb0: 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20 7b  sMono()..      {
1cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
1cd0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1cf0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1d00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1d10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d20: 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e 6f        if (isMono
1d30: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d50: 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65 2e   isMono = (Type.
1d60: 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e 74  GetType(MonoRunt
1d70: 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c 6c  imeType) != null
1d80: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1d90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
1da0: 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20 20  bool)isMono;..  
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1dc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1dd0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1de0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1df0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
1e00: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
1e10: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1e20: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
1e30: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
1e40: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1e50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ea0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
1eb0: 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a  ternal Methods..
1ec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1ed0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
1ee0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
1ef0: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
1f00: 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f   is running on o
1f10: 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77  ne of the Window
1f20: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73 75  s..      /// [su
1f30: 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20  b-]platforms... 
1f40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f50: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
1f60: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f70: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65  /// Non-zero whe
1f80: 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e  n running on Win
1f90: 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  dows; otherwise,
1fa0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
1fb0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1fc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fd0: 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64 6f  tic bool IsWindo
1fe0: 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ws()..      {.. 
1ff0: 20 20 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72           Platfor
2000: 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d  mID platformId =
2010: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56   Environment.OSV
2020: 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b  ersion.Platform;
2030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
2040: 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d   ((platformId ==
2050: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
2060: 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  2S) ||..        
2070: 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49        (platformI
2080: 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e  d == PlatformID.
2090: 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c  Win32Windows) ||
20a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20b0: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
20c0: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e  latformID.Win32N
20d0: 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  T) ||..         
20e0: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
20f0: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
2100: 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20  inCE))..        
2110: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2120: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2130: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
2140: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2150: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
2160: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
21c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 77 72  /// This is a wr
21e0: 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
21f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
2200: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e 46 6f   cref="String.Fo
2210: 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72 6f 76  rmat(IFormatProv
2220: 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a 65  ider,String,Obje
2230: 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f 64  ct[])" /> method
2240: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e 20  ...      /// On 
2250: 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f 20  Mono, it has to 
2260: 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 20  call the method 
2270: 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f 75 74  overload without
2280: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
2290: 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f 72 6d  <see cref="IForm
22a0: 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e 20 70  atProvider" /> p
22b0: 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20 74 6f  arameter, due to
22c0: 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d   a bug in Mono..
22d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
22e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
22f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
2300: 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 20 20  ovider">..      
2310: 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73 65 64  /// This is used
2320: 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73 70 65   for culture-spe
2330: 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69 6e 67  cific formatting
2340: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
2350: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
2360: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f   <param name="fo
2370: 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  rmat">..      //
2380: 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72  / The format str
2390: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
23a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
23b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
23c0: 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f  "args">..      /
23d0: 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68 65 20  // An array the 
23e0: 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d 61  objects to forma
23f0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
2400: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2410: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2420: 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c     /// The resul
2430: 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20 20  ting string...  
2440: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2450: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
2460: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
2470: 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a   StringFormat(..
2480: 20 20 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61            IForma
2490: 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64  tProvider provid
24a0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  er,..          s
24b0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a 20  tring format,.. 
24c0: 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 20           params 
24d0: 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20  object[] args.. 
24e0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
24f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
2500: 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20  f (IsMono())..  
2510: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2520: 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  rn String.Format
2530: 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d  (format, args);.
2540: 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d  .          else.
2550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2560: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
2570: 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20 66 6f  mat(provider, fo
2580: 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20  rmat, args);..  
2590: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
25a0: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20  dregion..  }..  
25b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
25c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2610: 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76  .  #region Nativ
2620: 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70 65 72  e Library Helper
2630: 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73   Class..  /// <s
2640: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
2650: 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73 73  his static class
2660: 20 70 72 6f 76 69 64 65 73 20 61 20 74 68 69 6e   provides a thin
2670: 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
2680: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
2690: 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69 6e  ry..  /// loadin
26a0: 67 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68  g features of th
26b0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c 61  e underlying pla
26c0: 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  tform...  /// </
26d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
26e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
26f0: 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48  s NativeLibraryH
2700: 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20 20  elper..  {..    
2710: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
2720: 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20  e Delegates..   
2730: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
2750: 20 64 65 6c 65 67 61 74 65 20 69 73 20 75 73 65   delegate is use
2760: 64 20 74 6f 20 77 72 61 70 20 74 68 65 20 63 6f  d to wrap the co
2770: 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e 67  ncept of loading
2780: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
2790: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62 61   /// library, ba
27a0: 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e 61  sed on a file na
27b0: 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e  me, and returnin
27c0: 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f 64  g the loaded mod
27d0: 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  ule..      /// h
27e0: 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  andle...      //
27f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2800: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2810: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
2820: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
2830: 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ile name of the 
2840: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74  native library t
2850: 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o load...      /
2860: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2870: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2880: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2890: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
28a0: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
28b0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
28c0: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
28d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
28f0: 61 74 65 20 64 65 6c 65 67 61 74 65 20 49 6e 74  ate delegate Int
2900: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 43  Ptr LoadLibraryC
2910: 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  allback(..      
2920: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2930: 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a 20  ame..      );.. 
2940: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2950: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
29b0: 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
29c0: 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ods..      /// <
29d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29e0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
29f0: 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69  load the specifi
2a00: 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  ed native librar
2a10: 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65  y file using the
2a20: 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f 2f   Win32..      //
2a30: 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f  / API...      //
2a40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2a50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2a60: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
2a70: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
2a80: 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ile name of the 
2a90: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74  native library t
2aa0: 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o load...      /
2ab0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2ac0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2ae0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
2af0: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
2b00: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
2b10: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
2b20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2b30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
2b40: 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74  ate static IntPt
2b50: 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e  r LoadLibraryWin
2b60: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  32(..          s
2b70: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
2b80: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2b90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ba0: 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
2bb0: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e  iveMethodsWin32.
2bc0: 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65  LoadLibrary(file
2bd0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  Name);..      }.
2be0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2c40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c50: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
2c60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c70: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
2c80: 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66   load the specif
2c90: 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ied native libra
2ca0: 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68  ry file using th
2cb0: 65 20 50 4f 53 49 58 0d 0a 20 20 20 20 20 20 2f  e POSIX..      /
2cc0: 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f  // API...      /
2cd0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2ce0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2cf0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
2d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2d10: 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  file name of the
2d20: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
2d30: 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20  to load...      
2d40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2d50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2d60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2d70: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
2d80: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
2d90: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
2da0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
2db0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2dc0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2dd0: 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50  vate static IntP
2de0: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f  tr LoadLibraryPo
2df0: 73 69 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  six(..          
2e00: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d  string fileName.
2e10: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
2e20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e30: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
2e40: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
2e50: 2e 64 6c 6f 70 65 6e 28 0d 0a 20 20 20 20 20 20  .dlopen(..      
2e60: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
2e70: 2c 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  , UnsafeNativeMe
2e80: 74 68 6f 64 73 50 6f 73 69 78 2e 52 54 4c 44 5f  thodsPosix.RTLD_
2e90: 44 45 46 41 55 4c 54 29 3b 0d 0a 20 20 20 20 20  DEFAULT);..     
2ea0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2eb0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2ec0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2f10: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
2f20: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
2f30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2f40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2f50: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
2f60: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
2f70: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66 69  ative library fi
2f80: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
2f90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2fa0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2fb0: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
2fc0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65      /// The file
2fd0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74   name of the nat
2fe0: 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c  ive library to l
2ff0: 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oad...      /// 
3000: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
3010: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3020: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
3030: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
3040: 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d  e upon success -
3050: 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20  OR- IntPtr.Zero 
3060: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
3070: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
3080: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
3090: 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f  static IntPtr Lo
30a0: 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20 20 20  adLibrary(..    
30b0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
30c0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
30d0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
30e0: 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62 72 61         LoadLibra
30f0: 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  ryCallback callb
3100: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
3110: 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20 21  yWin32;....#if !
3120: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
3130: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
3140: 20 20 20 20 20 69 66 20 28 21 48 65 6c 70 65 72       if (!Helper
3150: 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
3160: 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
3170: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c      callback = L
3180: 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78 3b  oadLibraryPosix;
3190: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
31a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 6c        return cal
31b0: 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29 3b  lback(fileName);
31c0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
31d0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
31e0: 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
31f0: 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
3200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55  /....  #region U
3250: 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70  nmanaged Interop
3260: 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63 20   Methods Static 
3270: 43 6c 61 73 73 20 28 50 4f 53 49 58 29 0d 0a 23  Class (POSIX)..#
3280: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
3290: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
32a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32b0: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
32c0: 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f   declares P/Invo
32d0: 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61  ke methods to ca
32e0: 6c 6c 20 6e 61 74 69 76 65 20 50 4f 53 49 58 20  ll native POSIX 
32f0: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
3300: 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b 53 75 70 70  ummary>..  [Supp
3310: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
3320: 65 53 65 63 75 72 69 74 79 5d 0d 0a 20 20 69 6e  eSecurity]..  in
3330: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
3340: 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ass UnsafeNative
3350: 4d 65 74 68 6f 64 73 50 6f 73 69 78 0d 0a 20 20  MethodsPosix..  
3360: 7b 0d 0a 20 20 20 20 20 20 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 2f 2f  ////////////////
33b0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
33c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
33d0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
33e0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
33f0: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
3400: 74 69 76 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e  tive Unix dlopen
3410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
3420: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 50  tion.  See the P
3430: 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74 69  OSIX documentati
3440: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
3450: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
3460: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
3470: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3490: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
34a0: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
34b0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
34c0: 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c  the executable l
34d0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
34e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
34f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3500: 6d 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20  me="mode">..    
3510: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74 20    /// This must 
3520: 62 65 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  be a combination
3530: 20 6f 66 20 74 68 65 20 69 6e 64 69 76 69 64 75   of the individu
3540: 61 6c 20 62 69 74 20 66 6c 61 67 73 20 52 54 4c  al bit flags RTL
3550: 44 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f  D_LAZY,..      /
3560: 2f 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c  // RTLD_NOW, RTL
3570: 44 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72  D_GLOBAL, and/or
3580: 20 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20   RTLD_LOCAL...  
3590: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
35a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
35b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
35c0: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
35d0: 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73  le handle upon s
35e0: 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50  uccess -OR- IntP
35f0: 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75  tr.Zero on failu
3600: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
3610: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3620: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49   [DllImport("__I
3630: 6e 74 65 72 6e 61 6c 22 2c 20 45 6e 74 72 79 50  nternal", EntryP
3640: 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22 2c  oint = "dlopen",
3650: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c  ..          Call
3660: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
3670: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
3680: 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
3690: 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69 2c   = CharSet.Ansi,
36a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73 74  ..          Best
36b0: 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c  FitMapping = fal
36c0: 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70  se, ThrowOnUnmap
36d0: 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65  pableChar = true
36e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74  ,..          Set
36f0: 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65  LastError = true
3700: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
3710: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
3720: 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28 73   IntPtr dlopen(s
3730: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20  tring fileName, 
3740: 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20 20  int mode);....  
3750: 20 20 20 20 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 0d 0a 20  /////////////.. 
37a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
37b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
37c0: 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65  r use with dlope
37d0: 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69  n(), bind functi
37e0: 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79 2e  on calls lazily.
37f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3800: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
3810: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
3820: 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78 31   RTLD_LAZY = 0x1
3830: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
3840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3880: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
3890: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
38a0: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
38b0: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64  h dlopen(), bind
38c0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
38d0: 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20 20  immediately...  
38e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
38f0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3900: 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c  al const int RTL
3910: 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d 0a  D_NOW = 0x2;....
3920: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3970: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3980: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3990: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
39a0: 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d 62  pen(), make symb
39b0: 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76 61  ols globally ava
39c0: 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  ilable...      /
39d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
39e0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
39f0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c 4f  nst int RTLD_GLO
3a00: 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d 0a  BAL = 0x100;....
3a10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3a60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3a70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3a80: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
3a90: 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65 20  pen(), opposite 
3aa0: 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c 20  of RTLD_GLOBAL, 
3ab0: 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74 2e  and the default.
3ac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3ad0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
3ae0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
3af0: 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30 78   RTLD_LOCAL = 0x
3b00: 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000;....      //
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b50: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
3b60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3b70: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
3b80: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 74  with dlopen(), t
3b90: 68 65 20 64 65 66 61 75 6c 74 73 20 75 73 65 64  he defaults used
3ba0: 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   by this class..
3bb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3bc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
3bd0: 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20 69 6e 74  ernal  const int
3be0: 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d 20   RTLD_DEFAULT = 
3bf0: 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44 5f  RTLD_NOW | RTLD_
3c00: 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23 65  GLOBAL;..  }..#e
3c10: 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
3c20: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
3c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
3c80: 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74  on Unmanaged Int
3c90: 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74 61  erop Methods Sta
3ca0: 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e 33 32  tic Class (Win32
3cb0: 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  )..  /// <summar
3cc0: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63  y>..  /// This c
3cd0: 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f  lass declares P/
3ce0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74  Invoke methods t
3cf0: 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 57 69  o call native Wi
3d00: 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f  n32 APIs...  ///
3d10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66   </summary>..#if
3d20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
3d30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b  CTFRAMEWORK..  [
3d40: 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65  SuppressUnmanage
3d50: 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a  dCodeSecurity]..
3d60: 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e  #endif..  intern
3d70: 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
3d80: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
3d90: 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a 20  odsWin32..  {.. 
3da0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3df0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3e00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
3e10: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
3e20: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
3e30: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
3e40: 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61   Win32 LoadLibra
3e50: 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  ry..      /// fu
3e60: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
3e70: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
3e80: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
3e90: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
3ea0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
3eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3ec0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3ed0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
3ee0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
3ef0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
3f00: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
3f10: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
3f20: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
3f30: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3f40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
3f50: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
3f60: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
3f70: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
3f80: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
3f90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
3fa0: 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54  urns>..#if !PLAT
3fb0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
3fc0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c  EWORK..      [Dl
3fd0: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
3fe0: 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  2",..#else..    
3ff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
4000: 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  redll",..#endif.
4010: 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  . CallingConvent
4020: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
4030: 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20  vention.Winapi, 
4040: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
4050: 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c  t.Auto,..#if !PL
4060: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
4070: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
4080: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
4090: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
40a0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
40b0: 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66   = true,..#endif
40c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c  ..          SetL
40d0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
40e0: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
40f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4100: 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61  IntPtr LoadLibra
4110: 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  ry(string fileNa
4120: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  me);....      //
4130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4170: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50  ///////....#if P
4180: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4190: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
41a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
41b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
41c0: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
41d0: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
41e0: 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32  the native Win32
41f0: 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a   GetSystemInfo..
4200: 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
4210: 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44  on.  See the MSD
4220: 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  N documentation 
4230: 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73  for full details
4240: 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20   on what it..   
4250: 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20     /// does...  
4260: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4270: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
4280: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65  aram name="syste
4290: 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f  mInfo">..      /
42a0: 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69 6e  // The system in
42b0: 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63 74  formation struct
42c0: 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65 64  ure to be filled
42d0: 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63 74   in by the funct
42e0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
42f0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
4300: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65  [DllImport("core
4310: 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  dll", CallingCon
4320: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
4330: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61  gConvention.Wina
4340: 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  pi)]..      inte
4350: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4360: 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74 65  rn void GetSyste
4370: 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45 4d  mInfo(out SYSTEM
4380: 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f  _INFO systemInfo
4390: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
43a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43e0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
43f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4400: 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 65    /// This enume
4410: 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20  ration contains 
4420: 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61 6c  the possible val
4430: 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f 63  ues for the proc
4440: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  essor..      ///
4450: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69   architecture fi
4460: 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74 65  eld of the syste
4470: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74  m information st
4480: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
4490: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
44a0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 65        internal e
44b0: 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72 63  num ProcessorArc
44c0: 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68 6f  hitecture : usho
44d0: 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69  rt /* COMPAT: Wi
44e0: 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b  n32. */..      {
44f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74 65  ..          Inte
4500: 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  l = 0,..        
4510: 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20    MIPS = 1,..   
4520: 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20 32         Alpha = 2
4530: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f 77  ,..          Pow
4540: 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20  erPC = 3,..     
4550: 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20       SHx = 4,.. 
4560: 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20 35           ARM = 5
4570: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 36  ,..          IA6
4580: 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20 20  4 = 6,..        
4590: 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a    Alpha64 = 7,..
45a0: 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20 3d            MSIL =
45b0: 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   8,..          A
45c0: 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20  MD64 = 9,..     
45d0: 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e       IA32_on_Win
45e0: 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20  64 = 10,..      
45f0: 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78      Unknown = 0x
4600: 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  FFFF..      }...
4610: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4660: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
4670: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4680: 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20   This structure 
4690: 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61  contains informa
46a0: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63  tion about the c
46b0: 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e  urrent computer.
46c0: 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   This..      ///
46d0: 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70 72   includes the pr
46e0: 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70 61  ocessor type, pa
46f0: 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20  ge size, memory 
4700: 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e 0d  addresses, etc..
4710: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4720: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74  mary>..      [St
4730: 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
4740: 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
4750: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
4760: 61 6c 20 73 74 72 75 63 74 20 53 59 53 54 45 4d  al struct SYSTEM
4770: 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a  _INFO..      {..
4780: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4790: 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   ProcessorArchit
47a0: 65 63 74 75 72 65 20 77 50 72 6f 63 65 73 73 6f  ecture wProcesso
47b0: 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
47c0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
47d0: 20 75 73 68 6f 72 74 20 77 52 65 73 65 72 76 65   ushort wReserve
47e0: 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  d; /* NOT USED *
47f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
4800: 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67 65 53  lic uint dwPageS
4810: 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ize; /* NOT USED
4820: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
4830: 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d  ublic IntPtr lpM
4840: 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f  inimumApplicatio
4850: 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54  nAddress; /* NOT
4860: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
4870: 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
4880: 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69  r lpMaximumAppli
4890: 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f  cationAddress; /
48a0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
48b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
48c0: 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72 6f  uint dwActivePro
48d0: 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e  cessorMask; /* N
48e0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
48f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
4900: 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63  t dwNumberOfProc
4910: 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55  essors; /* NOT U
4920: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
4930: 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77    public uint dw
4940: 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f  ProcessorType; /
4950: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4960: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
4970: 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f  uint dwAllocatio
4980: 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a  nGranularity; /*
4990: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
49a0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
49b0: 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72  short wProcessor
49c0: 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53  Level; /* NOT US
49d0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
49e0: 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77   public ushort w
49f0: 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f  ProcessorRevisio
4a00: 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  n; /* NOT USED *
4a10: 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  /..      }..#end
4a20: 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  if..  }..  #endr
4a30: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
4a90: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
4aa0: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
4ab0: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 53 51  Static Class (SQ
4ac0: 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75  Lite)..  /// <su
4ad0: 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
4ae0: 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65  is class declare
4af0: 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  s P/Invoke metho
4b00: 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76  ds to call nativ
4b10: 65 20 53 51 4c 69 74 65 20 41 50 49 73 2e 0d 0a  e SQLite APIs...
4b20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4b30: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
4b40: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
4b50: 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d  ..  [SuppressUnm
4b60: 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69  anagedCodeSecuri
4b70: 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69  ty]..#endif..  i
4b80: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
4b90: 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76  lass UnsafeNativ
4ba0: 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20  eMethods..  {.. 
4bb0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 68 61       #region Sha
4bc0: 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c 69 74  red Native SQLit
4bd0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
4be0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
4bf0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
4c00: 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
4c10: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4c30: 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75  file extension u
4c40: 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69 63 20  sed for dynamic 
4c50: 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d  link libraries..
4c60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4c70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
4c80: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
4c90: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c 46  only string DllF
4ca0: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22  ileExtension = "
4cb0: 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  .dll";....      
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
4d10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4d20: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
4d30: 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65  le extension use
4d40: 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f  d for the XML co
4d50: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
4d60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
4d70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
4d80: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
4d90: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f  adonly string Co
4da0: 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f  nfigFileExtensio
4db0: 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a  n = ".config";..
4dc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e10: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
4e20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4e30: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6e 61  / This is the na
4e40: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
4e50: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
4e60: 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65   specific to the
4e70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79 73 74  ..      /// Syst
4e80: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 61  em.Data.SQLite a
4e90: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
4ea0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4eb0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
4ec0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
4ed0: 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ring XmlConfigFi
4ee0: 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20  leName =..      
4ef0: 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61 66      typeof(Unsaf
4f00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29 2e  eNativeMethods).
4f10: 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c 6c 46  Namespace + DllF
4f20: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a  ileExtension +..
4f30: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69 67            Config
4f40: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a  FileExtension;..
4f50: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
4f60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
4f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
4fc0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
4fd0: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
4fe0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4ff0: 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75  / This lock is u
5000: 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74  sed to protect t
5010: 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74  he static _SQLit
5020: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  eNativeModuleFil
5030: 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f  eName,..      //
5040: 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  / _SQLiteNativeM
5050: 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64  oduleHandle, and
5060: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5070: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
5080: 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f  fields...      /
5090: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
50a0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
50b0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  tic readonly obj
50c0: 65 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f  ect staticSyncRo
50d0: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
50e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5140: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5150: 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69    /// This dicti
5160: 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65  onary stores the
5170: 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65 65   mappings betwee
5180: 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  n processor arch
5190: 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20  itecture..      
51a0: 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c  /// names and pl
51b0: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20 20 54  atform names.  T
51c0: 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20 61 72  hese mappings ar
51d0: 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72 20 74  e now used for t
51e0: 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75  wo..      /// pu
51f0: 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74 2c 20  rposes.  First, 
5200: 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f  they are used to
5210: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68   determine if th
5220: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
5230: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 20  .      /// base 
5240: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69  should be used i
5250: 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6c 6f  nstead of the lo
5260: 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20 75 70  cation, based up
5270: 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65 0d 0a  on whether one..
5280: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72        /// or mor
5290: 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64 20 73  e of the named s
52a0: 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 65  ub-directories e
52b0: 78 69 73 74 20 77 69 74 68 69 6e 20 74 68 65 20  xist within the 
52c0: 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20  assembly code.. 
52d0: 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e 20 20       /// base.  
52e0: 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61 72 65  Second, they are
52f0: 20 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20   used to assist 
5300: 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65 20 61  in loading the a
5310: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
5320: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6e 74    /// SQLite int
5330: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 6e  erop assembly in
5340: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  to the current p
5350: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
5360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5370: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
5380: 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  tic Dictionary<s
5390: 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70  tring, string> p
53a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
53b0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a  turePlatforms;..
53c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
53d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
53e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5420: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5430: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5440: 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69  /// For now, thi
5450: 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79 20  s method simply 
5460: 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69 61  calls the Initia
5470: 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  lize method...  
5480: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5490: 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69 63  y>..      static
54a0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
54b0: 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  hods()..      {.
54c0: 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74 69  .          Initi
54d0: 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20  alize();..      
54e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
54f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5540: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5550: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
5560: 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69 73   initialize this
5570: 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c 6f   class by pre-lo
5580: 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ading the native
5590: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
55a0: 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74  // library for t
55b0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
55c0: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
55d0: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
55e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
55f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
5600: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
5610: 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 29  oid Initialize()
5620: 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 53  ..      {..#if S
5630: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c  QLITE_STANDARD |
5640: 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c  | USE_INTEROP_DL
5650: 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  L || PLATFORM_CO
5660: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
5670: 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49  #if PRELOAD_NATI
5680: 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20  VE_LIBRARY..    
5690: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
56a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
56b0: 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  the "No_PreLoadS
56c0: 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65  QLite" environme
56d0: 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73  nt variable is s
56e0: 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20 20  et (to..        
56f0: 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74 68    //       anyth
5700: 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f  ing), skip all o
5710: 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20  ur special code 
5720: 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72  and simply retur
5730: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
5740: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
5750: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
5760: 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74  "No_PreLoadSQLit
5770: 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c  e", null) != nul
5780: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
5790: 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69    return;..#endi
57a0: 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  f..#endif....   
57b0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
57c0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
57d0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
57e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
57f0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65      // NOTE: Cre
5800: 61 74 65 20 74 68 65 20 6c 69 73 74 20 6f 66 20  ate the list of 
5810: 73 74 61 74 69 73 74 69 63 73 20 74 68 61 74 20  statistics that 
5820: 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65  will contain the
5830: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
5840: 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66 20 74       number of t
5850: 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69 6e  imes each settin
5860: 67 20 76 61 6c 75 65 20 68 61 73 20 62 65 65 6e  g value has been
5870: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20   read...        
5880: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5890: 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74 69 61  DebugData.Initia
58a0: 6c 69 7a 65 53 65 74 74 69 6e 67 52 65 61 64 43  lizeSettingReadC
58b0: 6f 75 6e 74 73 28 29 3b 0d 0a 23 65 6e 64 69 66  ounts();..#endif
58c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
58d0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
58e0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
58f0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
5900: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5910: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5920: 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a          // TODO:
5930: 20 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73 20   Make sure this 
5940: 6c 69 73 74 20 69 73 20 75 70 64 61 74 65 64 20  list is updated 
5950: 69 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64  if the supported
5960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5970: 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73  //       process
5980: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
5990: 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61  names and/or pla
59a0: 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20  tform names..   
59b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
59c0: 20 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20      changes...  
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
59f0: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
5a00: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
5a10: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
5a20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a50: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65      // NOTE: Cre
5a60: 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70  ate the map of p
5a70: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
5a80: 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20  cture names..   
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5aa0: 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66  /       to platf
5ab0: 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20  orm names using 
5ac0: 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69  a case-insensiti
5ad0: 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20  ve string..     
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5af0: 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d        comparer..
5b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5b20: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
5b30: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
5b40: 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20  atforms =..     
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
5b70: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28  string, string>(
5b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
5ba0: 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e  ngComparer.Ordin
5bb0: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a  alIgnoreCase);..
5bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bd0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5be0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
5bf0: 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69 73  E: Setup the lis
5c00: 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61  t of platform na
5c10: 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  mes associated w
5c20: 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ith..           
5c30: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
5c40: 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 70 72  the supported pr
5c50: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
5c60: 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  tures...        
5c70: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c90: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
5ca0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
5cb0: 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32  dd("x86", "Win32
5cc0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
5cd0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
5ce0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
5cf0: 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34  forms.Add("AMD64
5d00: 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20  ", "x64");..    
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
5d20: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5d30: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
5d40: 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75  ("IA64", "Itaniu
5d50: 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m");..          
5d60: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
5d70: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
5d80: 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22  tforms.Add("ARM"
5d90: 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20  , "WinCE");..   
5da0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
5db0: 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
5dc0: 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52  ARD || USE_INTER
5dd0: 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f  OP_DLL || PLATFO
5de0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
5df0: 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44  ORK..#if PRELOAD
5e00: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
5e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5e20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5e30: 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74   // BUGBUG: What
5e40: 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70   about other app
5e50: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73  lication domains
5e60: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
5e70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
5e80: 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61     if (_SQLiteNa
5e90: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
5ea0: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
5eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5ec0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5ed0: 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65       string base
5ee0: 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c  Directory = null
5ef0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5f00: 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
5f10: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5f20: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5f40: 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20  * IGNORED */..  
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f  SearchForDirecto
5f70: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
5f80: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62             ref b
5f90: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72 65  aseDirectory, re
5fa0: 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  f processorArchi
5fb0: 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20  tecture);....   
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5fd0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5fe0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
5ff0: 74 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61  tempt to pre-loa
6000: 64 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  d the SQLite cor
6010: 65 20 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a 20  e library (or.. 
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6030: 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6f   //       intero
6040: 70 20 61 73 73 65 6d 62 6c 79 29 20 61 6e 64 20  p assembly) and 
6050: 73 74 6f 72 65 20 62 6f 74 68 20 74 68 65 20 66  store both the f
6060: 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ile name..      
6070: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6080: 20 20 20 20 20 61 6e 64 20 6e 61 74 69 76 65 20       and native 
6090: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
60a0: 72 20 6c 61 74 65 72 20 75 73 61 67 65 2e 0d 0a  r later usage...
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
60d0: 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52          /* IGNOR
60e0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
60f0: 20 20 20 20 20 20 20 20 20 50 72 65 4c 6f 61 64           PreLoad
6100: 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20  SQLiteDll(..    
6110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6120: 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
6130: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6140: 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ecture,..       
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6160: 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ef _SQLiteNative
6170: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
6180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6190: 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69         ref _SQLi
61a0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
61b0: 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
61c0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
61d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
61e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
61f0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6250: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6260: 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70 61   Combines two pa
6270: 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  th strings...   
6280: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6290: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
62a0: 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31 22  ram name="path1"
62b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
62c0: 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52 2d   first path -OR-
62d0: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   null...      //
62e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
62f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6300: 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20 20  e="path2">..    
6310: 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64    /// The second
6320: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
6330: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
6340: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
6350: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
6360: 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e 65   /// The combine
6370: 64 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d 4f  d path string -O
6380: 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68 20  R- null if both 
6390: 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  of the original 
63a0: 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  path..      /// 
63b0: 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c 6c  strings are null
63c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
63d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
63e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
63f0: 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69 6e  ring MaybeCombin
6400: 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
6410: 20 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c 0d    string path1,.
6420: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6430: 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20 20  g path2..       
6440: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
6450: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
6460: 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h1 != null)..   
6470: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6480: 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68          if (path
6490: 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  2 != null)..    
64a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
64b0: 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69 6e  turn Path.Combin
64c0: 65 28 70 61 74 68 31 2c 20 70 61 74 68 32 29 3b  e(path1, path2);
64d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
64e0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
64f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
6500: 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  ath1;..         
6510: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c   }..          el
6520: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  se..          {.
6530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
6540: 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c  f (path2 != null
6550: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6560: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74 68       return path
6570: 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2;..            
6580: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
6590: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
65a0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
65b0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
65c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
65d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
6620: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
6630: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
6640: 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66  rns the XML conf
6650: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
6660: 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73 65  ame for the asse
6670: 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mbly..      /// 
6680: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d  containing the m
6690: 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61  anaged System.Da
66a0: 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e  ta.SQLite compon
66b0: 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ents...      ///
66c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
66d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
66e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
66f0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
6700: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d  n file name -OR-
6710: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
6720: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
6730: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64  ..      /// or d
6740: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a  oes not exist...
6750: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
6760: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
6770: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
6780: 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  g GetXmlConfigFi
6790: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
67a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
67b0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  ing directory;..
67c0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
67d0: 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69   fileName;....#i
67e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
67f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6800: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
6810: 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  y = AppDomain.Cu
6820: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
6830: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
6840: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
6850: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
6860: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c  h(directory, Xml
6870: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
6880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
6890: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
68a0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
68b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
68c0: 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e 64 69 66  ileName;..#endif
68d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 64 69  ....          di
68e0: 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73 73  rectory = GetAss
68f0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
6900: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  ;..          fil
6910: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
6920: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
6930: 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ry, XmlConfigFil
6940: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
6950: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
6960: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
6970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
6980: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
6990: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
69a0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
69b0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
69c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6a10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6a20: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
6a30: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  d returns the va
6a40: 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  lue of the speci
6a50: 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73  fied setting, us
6a60: 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  ing the XML..   
6a70: 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
6a80: 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72  tion file and/or
6a90: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
6aa0: 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74   variables for t
6ab0: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
6ac0: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e    /// process an
6ad0: 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  d/or the current
6ae0: 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76   system, when av
6af0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
6b00: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6b10: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6b20: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
6b30: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
6b40: 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
6b50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
6b60: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6b70: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
6b80: 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
6b90: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
6ba0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
6bb0: 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
6bc0: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
6bd0: 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
6be0: 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
6bf0: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
6c00: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6c10: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
6c20: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
6c30: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
6c40: 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65  setting -OR- the
6c50: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73   default value s
6c60: 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20  pecified by..   
6c70: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
6c80: 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20   name="default" 
6c90: 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74  /> if it has not
6ca0: 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
6cb0: 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f  itly or..      /
6cc0: 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
6cd0: 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66  ermined.  By def
6ce0: 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65  ault, all refere
6cf0: 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67  nces to existing
6d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69  ..      /// envi
6d10: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
6d20: 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64  s will be expand
6d30: 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72  ed to their corr
6d40: 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73  esponding values
6d50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
6d60: 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20  in the value to 
6d70: 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65  be returned unle
6d80: 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e  ss either the "N
6d90: 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20  o_Expand" or..  
6da0: 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61      /// "No_Expa
6db0: 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  nd_<paramref nam
6dc0: 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76  e="name" />" env
6dd0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
6de0: 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20  e is set [to..  
6df0: 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67      /// anything
6e00: 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ]...      /// </
6e10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6e20: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6e30: 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e  string GetSettin
6e40: 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
6e50: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
6e60: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
6e70: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
6e80: 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d  efault /* in */.
6e90: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
6ea0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
6eb0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6ec0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
6ed0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
6ee0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
6ef0: 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74  pecial "No_SQLit
6f00: 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
6f10: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
6f20: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6f30: 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
6f40: 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c  t [to anything],
6f50: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
6f60: 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20  l always..      
6f70: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
6f80: 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  urn the default 
6f90: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
6fa0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6fb0: 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
6fc0: 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
6fd0: 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
6fe0: 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c           "No_SQL
6ff0: 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
7000: 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ue") != null).. 
7010: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7020: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7030: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
7040: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
7050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
7060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
70b0: 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
70c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
70d0: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
70e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7140: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
7150: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
7160: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
7170: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
7180: 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43  mentSettingReadC
7190: 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65  ount(name, false
71a0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
71b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
71c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7210: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
7220: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
7230: 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  null;....#if !PL
7240: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7250: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
7260: 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d     bool expand =
7270: 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
7280: 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d      if (Environm
7290: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
72a0: 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45  ntVariable("No_E
72b0: 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29  xpand") != null)
72c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
72e0: 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  and = false;..  
72f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7300: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 45 6e       else if (En
7310: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
7320: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
7330: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7340: 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f       HelperMetho
7350: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
7360: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
7370: 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  riantCulture,.. 
7380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7390: 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22   "No_Expand_{0}"
73a0: 2c 20 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c  , name)) != null
73b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
73d0: 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  pand = false;.. 
73e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
73f0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
7400: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
7410: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
7420: 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  le(name);....   
7430: 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
7440: 64 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e  d && !String.IsN
7450: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
7460: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7470: 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
7480: 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
7490: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
74a0: 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
74b0: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
74c0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
74d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
74e0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
74f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7500: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
7510: 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f   "No_SQLiteXmlCo
7520: 6e 66 69 67 46 69 6c 65 22 20 65 6e 76 69 72 6f  nfigFile" enviro
7530: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
7540: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  s..          // 
7550: 20 20 20 20 20 20 73 65 74 20 5b 74 6f 20 61 6e        set [to an
7560: 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65  ything], this me
7570: 74 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45 52 20  thod will NEVER 
7580: 72 65 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  read from the.. 
7590: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
75a0: 20 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74    XML configurat
75b0: 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ion file...     
75c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
75d0: 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
75e0: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
75f0: 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
7600: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f              "No_
7610: 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46  SQLiteXmlConfigF
7620: 69 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ile") != null)..
7630: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7640: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7650: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
7660: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
7670: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
7680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
76d0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
76e0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
76f0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
7700: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
7710: 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f  entSettingReadCo
7720: 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b  unt(name, true);
7730: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
7740: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7750: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  /....          t
77b0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
77c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
77d0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
77e0: 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c   GetXmlConfigFil
77f0: 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  eName();....    
7800: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
7810: 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  leName == null).
7820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7830: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
7840: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
7850: 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74       XmlDocument
7860: 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20   document = new 
7870: 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a  XmlDocument();..
7880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7890: 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69  document.Load(fi
78a0: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
78b0: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
78c0: 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64  ment element = d
78d0: 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69  ocument.SelectSi
78e0: 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20  ngleNode(..     
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
7900: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
7910: 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
7920: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
7930: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
7940: 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e 66 69           "/confi
7950: 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65 74 74  guration/appSett
7960: 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b  ings/add[@key='{
7970: 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73  0}']", name)) as
7980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7990: 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 0d      XmlElement;.
79a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
79b0: 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20   if (element != 
79c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
79d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
79e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
79f0: 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62 75  ement.HasAttribu
7a00: 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20 20  te("value"))..  
7a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a20: 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d      value = elem
7a30: 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74 65  ent.GetAttribute
7a40: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 23 69  ("value");....#i
7a50: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7a60: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a80: 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21 53  if (expand && !S
7a90: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
7aa0: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ac0: 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72     value = Envir
7ad0: 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76  onment.ExpandEnv
7ae0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
7af0: 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  s(value);..#endi
7b00: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
7b10: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
7b20: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
7b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b40: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7b60: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
7b70: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
7b80: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
7b90: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
7ba0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
7bb0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
7bc0: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
7bd0: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
7be0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
7bf0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
7c00: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
7c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
7c20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
7c30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7c40: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
7c50: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
7c60: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
7c70: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7c80: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
7c90: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
7ca0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
7cb0: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
7cc0: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
7cd0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
7ce0: 20 67 65 74 20 73 65 74 74 69 6e 67 20 22 20 2b   get setting " +
7cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7d00: 20 20 20 20 20 20 20 20 22 5c 22 7b 30 7d 5c 22          "\"{0}\"
7d10: 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 20 6e 61   value: {1}", na
7d20: 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  me, e)); /* thro
7d30: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
7d40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7d50: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
7d60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7d80: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
7d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7da0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
7db0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7dc0: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
7dd0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
7de0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7e30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7e40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7e50: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
7e60: 74 61 74 69 63 20 73 74 72 69 6e 67 20 4c 69 73  tatic string Lis
7e70: 74 54 6f 53 74 72 69 6e 67 28 49 4c 69 73 74 3c  tToString(IList<
7e80: 73 74 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a 20  string> list).. 
7e90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7ea0: 20 20 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e 75    if (list == nu
7eb0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
7ec0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
7ed0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72  ...          Str
7ee0: 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c  ingBuilder resul
7ef0: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
7f00: 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
7f10: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73        foreach (s
7f20: 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69 6e  tring element in
7f30: 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20   list)..        
7f40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7f50: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d     if (element =
7f60: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
7f70: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
7f80: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
7f90: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
7fa0: 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  .Length > 0)..  
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fc0: 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 27 20  result.Append(' 
7fd0: 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
7fe0: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
7ff0: 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20  nd(element);..  
8000: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8010: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
8020: 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b  sult.ToString();
8030: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
8040: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8090: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
80a0: 61 74 69 63 20 69 6e 74 20 43 68 65 63 6b 46 6f  atic int CheckFo
80b0: 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e  rArchitecturesAn
80c0: 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20 20  dPlatforms(..   
80d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
80e0: 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
80f0: 20 20 20 20 72 65 66 20 4c 69 73 74 3c 73 74 72      ref List<str
8100: 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20 20  ing> matches..  
8110: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
8120: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e   {..          in
8130: 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d  t result = 0;...
8140: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d  .          if (m
8150: 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  atches == null).
8160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  .              m
8170: 61 74 63 68 65 73 20 3d 20 6e 65 77 20 4c 69 73  atches = new Lis
8180: 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a  t<string>();....
8190: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
81a0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
81b0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
81d0: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
81e0: 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29  Empty(directory)
81f0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
8200: 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 6f         (processo
8210: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
8220: 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29 29  tforms != null))
8230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8240: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8250: 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65       foreach (Ke
8260: 79 56 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e  yValuePair<strin
8270: 67 2c 20 73 74 72 69 6e 67 3e 20 70 61 69 72 0d  g, string> pair.
8280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8290: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 20               in 
82a0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
82b0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 29 0d  cturePlatforms).
82c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
82d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
82f0: 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73  Directory.Exists
8300: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
8310: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 70 61 69  h(directory, pai
8320: 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20 20 20  r.Key)))..      
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8340: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8350: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
8360: 63 68 65 73 2e 41 64 64 28 70 61 69 72 2e 4b 65  ches.Add(pair.Ke
8370: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
8380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8390: 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20  esult++;..      
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
83c0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
83d0: 67 20 76 61 6c 75 65 20 3d 20 70 61 69 72 2e 56  g value = pair.V
83e0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
83f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8400: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
8410: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8420: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
8430: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78  if (Directory.Ex
8460: 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e  ists(MaybeCombin
8470: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
8480: 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20   value)))..     
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
84c0: 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29  tches.Add(value)
84d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
84f0: 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ult++;..        
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8520: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
8530: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
8540: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
8550: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
8560: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8570: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
85c0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
85d0: 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73  ic bool CheckAss
85e0: 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a  emblyCodeBase(..
85f0: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
8600: 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20  ly assembly,..  
8610: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
8620: 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
8630: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
8640: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
8650: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
8660: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8670: 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  (assembly == nul
8680: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
8690: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
86a0: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
86b0: 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65       string code
86c0: 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Base = assembly.
86d0: 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20  CodeBase;....   
86e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
86f0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
8700: 70 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a  pty(codeBase))..
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8720: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
8730: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8740: 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55   Uri uri = new U
8750: 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20  ri(codeBase);.. 
8760: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
8770: 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  ing localFileNam
8780: 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74  e = uri.LocalPat
8790: 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
87a0: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
87b0: 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61  ists(localFileNa
87c0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
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 0d 0a 20 20 20 20 20 20 20  alse;....       
87f0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
8800: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
8810: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
8820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8830: 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d      localFileNam
8840: 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
8850: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8860: 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69   string xmlConfi
8870: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62  gFileName = Mayb
8880: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
8890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88a0: 20 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43   directory, XmlC
88b0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d  onfigFileName);.
88c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
88d0: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
88e0: 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  (xmlConfigFileNa
88f0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
8900: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
8910: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
8920: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
8930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8940: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
8950: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8970: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
8980: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
8990: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
89a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89b0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
89c0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
89d0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
89f0: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
8a00: 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20  re-loader found 
8a10: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
8a20: 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20  n file " +..    
8a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a40: 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20        "via code 
8a50: 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74  base for current
8a60: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
8a70: 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c  embly: \"{0}\"",
8a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a90: 20 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43              xmlC
8aa0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b  onfigFileName));
8ab0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ad0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8ae0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
8af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8b10: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
8b20: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
8b30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
8b40: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
8b50: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
8b60: 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65   = localFileName
8b70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8b80: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
8b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8ba0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
8bb0: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
8bc0: 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b   matches = null;
8bd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8be0: 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72    if (CheckForAr
8bf0: 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c  chitecturesAndPl
8c00: 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72  atforms(director
8c10: 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29 20  y, ref matches) 
8c20: 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
8c30: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
8c40: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
8c50: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
8c80: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ca0: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
8cb0: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
8cc0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
8cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ce0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
8cf0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
8d00: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
8d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
8d20: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
8d30: 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20  re-loader found 
8d40: 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72 65 63  native sub-direc
8d50: 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20  tories " +..    
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d70: 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20        "via code 
8d80: 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74  base for current
8d90: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
8da0: 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c  embly: \"{0}\"",
8db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8dc0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74              List
8dd0: 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73  ToString(matches
8de0: 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ))); /* throw */
8df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
8e10: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8e40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
8e50: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
8e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8e70: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
8e90: 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65  Name = localFile
8ea0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
8eb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8ec0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
8ed0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8ee0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8ef0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
8f00: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
8f10: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
8f20: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
8f30: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
8f40: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
8f50: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
8f60: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
8f70: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  if..          {.
8f80: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
8f90: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
8fa0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
8fb0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8fc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8fd0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
8fe0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
8ff0: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
9000: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
9010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
9020: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
9030: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
9040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9050: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
9060: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69  y pre-loader fai
9070: 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64  led to check cod
9080: 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20  e base " +..    
9090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90a0: 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
90b0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
90c0: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
90d0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
90e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
90f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
9100: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
9110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9120: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
9130: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
9140: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
9150: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
9160: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
9170: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
9180: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
9190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
91e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
91f0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
9200: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
9210: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
9220: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
9230: 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20  rently being..  
9240: 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64      /// executed
9250: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9260: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9270: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9280: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65      /// The dire
9290: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
92a0: 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
92b0: 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20   being executed 
92c0: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20  -OR- null if..  
92d0: 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f      /// it canno
92e0: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
92f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
9300: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
9310: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
9320: 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44  ing GetAssemblyD
9330: 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
9340: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
9350: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
9360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41  .              A
9370: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
9380: 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
9390: 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
93a0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
93b0: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
93c0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
93e0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9400: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
9410: 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
9420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
9440: 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
9450: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
9460: 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
9470: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
9480: 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
9490: 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
94a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94b0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
94c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
94d0: 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
94e0: 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
94f0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
9500: 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65          if (!Che
9510: 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
9520: 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66  se(assembly, ref
9530: 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20   fileName))..   
9540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
9550: 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
9560: 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65  ly.Location;..#e
9570: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
9580: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
9590: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
95a0: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
95b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
95c0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
95d0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
95e0: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
95f0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
9600: 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ame(fileName);..
9610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9620: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
9630: 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
9640: 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry))..          
9650: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
9660: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
9670: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
9680: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
9690: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
96a0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
96b0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
96c0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
96d0: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
96e0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
96f0: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
9700: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9710: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
9720: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
9730: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
9740: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
9750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
9770: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
9780: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
9790: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97b0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
97c0: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97e0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
97f0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
9800: 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72  ailed to get dir
9810: 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20  ectory " +..    
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9830: 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79    "for currently
9840: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
9850: 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  bly: {0}", e)); 
9860: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
9870: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9880: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
9890: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
98a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
98b0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
98c0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
98d0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
98e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
98f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
9900: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ull;..      }.. 
9910: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
9920: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9970: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
9980: 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74  ion Optional Nat
9990: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
99a0: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
99b0: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  ode..      //.. 
99c0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
99d0: 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20   we are looking 
99e0: 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61 72 64  for the standard
99f0: 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22 73 71   SQLite DLL ("sq
9a00: 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20  lite3.dll"),..  
9a10: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
9a20: 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22 53   interop DLL ("S
9a30: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c  QLite.Interop.dl
9a40: 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65 20 72  l"), or we are r
9a50: 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20  unning on the.. 
9a60: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e       //       .N
9a70: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
9a80: 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20  work, we should 
9a90: 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63 6f 64  include this cod
9aa0: 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a  e (only if the..
9ab0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66        //       f
9ac0: 65 61 74 75 72 65 20 68 61 73 20 61 63 74 75 61  eature has actua
9ad0: 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  lly been enabled
9ae0: 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20 77 6f  ).  This code wo
9af0: 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a  uld be totally..
9b00: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
9b10: 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68 69 73  edundant if this
9b20: 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65 65 6e   module has been
9b30: 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68   bundled into th
9b40: 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20  e mixed-mode..  
9b50: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
9b60: 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  embly...      //
9b70: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
9b80: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
9b90: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
9ba0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9bb0: 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f  EWORK....      /
9bc0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
9bd0: 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69  : Only compile i
9be0: 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  n the native lib
9bf0: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f  rary pre-load co
9c00: 64 65 20 69 66 20 74 68 65 20 66 65 61 74 75 72  de if the featur
9c10: 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
9c20: 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61 62 6c    has been enabl
9c30: 65 64 20 66 6f 72 20 74 68 69 73 20 62 75 69 6c  ed for this buil
9c40: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  d...      //..#i
9c50: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
9c60: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
9c70: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9c80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
9c90: 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72 6f 6e  e of the environ
9ca0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 63 6f  ment variable co
9cb0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72 6f  ntaining the pro
9cc0: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
9cd0: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  / architecture o
9ce0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
9cf0: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
9d00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9d10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9d20: 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69  ic readonly stri
9d30: 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43  ng PROCESSOR_ARC
9d40: 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20 20 20  HITECTURE =..   
9d50: 20 20 20 20 20 20 20 22 50 52 4f 43 45 53 53 4f         "PROCESSO
9d60: 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 22 3b  R_ARCHITECTURE";
9d70: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
9dd0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
9de0: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
9df0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9e00: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
9e10: 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ule file name fo
9e20: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
9e30: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 6e  ite library or n
9e40: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
9e50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9e60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9e70: 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65  c string _SQLite
9e80: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  NativeModuleFile
9e90: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
9ea0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9ef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9f10: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
9f20: 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65  e handle for the
9f30: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
9f40: 69 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61  ibrary or the va
9f50: 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  lue..      /// I
9f60: 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20  ntPtr.Zero...   
9f70: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9f80: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
9f90: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f   static IntPtr _
9fa0: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
9fb0: 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74  leHandle = IntPt
9fc0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23  r.Zero;..      #
9fd0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
9fe0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
a030: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a040: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
a050: 65 72 6d 69 6e 65 73 20 74 68 65 20 62 61 73 65  ermines the base
a060: 20 66 69 6c 65 20 6e 61 6d 65 20 28 77 69 74 68   file name (with
a070: 6f 75 74 20 61 6e 79 20 64 69 72 65 63 74 6f 72  out any director
a080: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a  y information)..
a090: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
a0a0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
a0b0: 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20 70 72  library to be pr
a0c0: 65 2d 6c 6f 61 64 65 64 20 62 79 20 74 68 69 73  e-loaded by this
a0d0: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
a0e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a0f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
a100: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
a110: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
a120: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
a130: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
a140: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
a150: 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  by..      /// th
a160: 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75  is class -OR- nu
a170: 6c 6c 20 69 66 20 69 74 73 20 76 61 6c 75 65 20  ll if its value 
a180: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
a190: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
a1a0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
a1b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a1c0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 61 74  ic string GetNat
a1d0: 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  iveLibraryFileNa
a1e0: 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  meOnly()..      
a1f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
a200: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
a210: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
a220: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
a230: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
a240: 65 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d  e_LibraryFileNam
a250: 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  eOnly", null);..
a260: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
a270: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20  fileNameOnly != 
a280: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
a290: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
a2a0: 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20  NameOnly;....   
a2b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
a2c0: 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d  LITE_DLL; /* COM
a2d0: 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  PAT */..      }.
a2e0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
a2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
a340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a350: 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72 20  // Searches for 
a360: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
a370: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65  e library in the
a380: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
a390: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  ining..      ///
a3a0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
a3b0: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
a3c0: 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61  ecuted as well a
a3d0: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
a3e0: 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tory..      /// 
a3f0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
a400: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
a410: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
a420: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a430: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a440: 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22  ="baseDirectory"
a450: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  >..      /// Upo
a460: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
a470: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
a480: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65  e modified to re
a490: 66 65 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d  fer to the base.
a4a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
a4b0: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
a4c0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
a4d0: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
a4e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a4f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a500: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
a510: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
a520: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
a530: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
a540: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
a550: 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
a560: 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20   to the name..  
a570: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69      /// of the i
a580: 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63 74 6f  mmediate directo
a590: 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66  ry (i.e. the off
a5a0: 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
a5b0: 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20  e directory)..  
a5c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69      /// containi
a5d0: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
a5e0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
a5f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
a600: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
a610: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
a620: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63  / Non-zero (succ
a630: 65 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69  ess) if the nati
a640: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
a650: 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68  y was found; oth
a660: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
a670: 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65  // zero (failure
a680: 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  )...      /// </
a690: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
a6a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
a6b0: 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72  ool SearchForDir
a6c0: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
a6d0: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61     ref string ba
a6e0: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
a6f0: 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
a700: 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
a710: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
a720: 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74  hitecture /* out
a730: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
a740: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
a750: 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74       if (GetSett
a760: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
a770: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
a780: 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72  oadSQLite_NoSear
a790: 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c  chForDirectory",
a7a0: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
a7b0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
a7c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a7d0: 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53  rn false; /* DIS
a7e0: 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  ABLED */..      
a7f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a800: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
a810: 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d   // NOTE: Determ
a820: 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69 6c  ine the base fil
a830: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
a840: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
a850: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  rary...         
a860: 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 69   //       If thi
a870: 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62  s is not known b
a880: 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77 65  y this class, we
a890: 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65   cannot continue
a8a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
a8b0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
a8c0: 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d  g fileNameOnly =
a8d0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
a8e0: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b  yFileNameOnly();
a8f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
a900: 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d   (fileNameOnly =
a910: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a920: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a930: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a940: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a950: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
a960: 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20  he list of base 
a970: 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20  directories and 
a980: 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f  processor/platfo
a990: 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  rm..          //
a9a0: 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54         names.  T
a9b0: 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20  hese lists will 
a9c0: 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  be used to help 
a9d0: 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74 69 76  locate the nativ
a9e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
a9f0: 20 20 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72        SQLite cor
aa00: 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e  e library (or in
aa10: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
aa20: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f  to pre-load into
aa30: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
aa40: 20 20 20 20 20 74 68 69 73 20 70 72 6f 63 65 73       this proces
aa50: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  s...          //
aa60: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
aa70: 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73  ng[] directories
aa80: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
aa90: 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44      GetAssemblyD
aaa0: 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66  irectory(),..#if
aab0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
aac0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
aad0: 20 20 20 20 20 20 20 20 20 20 20 41 70 70 44 6f             AppDo
aae0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
aaf0: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
ab00: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
ab10: 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20       };....     
ab20: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75       string[] su
ab30: 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b  bDirectories = {
ab40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab50: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
ab60: 69 74 65 63 74 75 72 65 28 29 2c 20 47 65 74 50  itecture(), GetP
ab70: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c  latformName(null
ab80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  )..          };.
ab90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
aba0: 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
abb0: 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
abc0: 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
abd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
abe0: 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
abf0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
ac00: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
ac10: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
ac20: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
ac30: 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
ac40: 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
ac50: 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
ac60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ac80: 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
ac90: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
acb0: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
acd0: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
ace0: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
acf0: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
ad00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad10: 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
ad20: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
ad30: 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
ad40: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ad50: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
ad60: 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
ad70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ad80: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ad90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
ada0: 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
adb0: 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
adc0: 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
add0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ade0: 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
adf0: 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
ae00: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
ae10: 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
ae20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
ae30: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
ae40: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
ae50: 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
ae60: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
ae70: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
ae80: 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
ae90: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
aea0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
aec0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
aed0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
aee0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af00: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
af10: 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20   = directory;.. 
af20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af30: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
af40: 63 68 69 74 65 63 74 75 72 65 20 3d 20 73 75 62  chitecture = sub
af50: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
af60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af70: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f    return true; /
af80: 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20  * FOUND */..    
af90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
afa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
afb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
afc0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
afd0: 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20  n false; /* NOT 
afe0: 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
aff0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
b000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
b050: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b060: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
b070: 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73   returns the bas
b080: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
b090: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
b0a0: 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  cation..      //
b0b0: 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  / domain...     
b0c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
b0d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
b0e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
b0f0: 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
b100: 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ry for the curre
b110: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
b120: 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20  omain -OR- null 
b130: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
b140: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
b150: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
b160: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b170: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b180: 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73  ic string GetBas
b190: 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  eDirectory()..  
b1a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b1b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
b1c0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
b1d0: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
b1e0: 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  seDirectory" env
b1f0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
b200: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
b210: 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73        is set, us
b220: 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f  e it verbatim fo
b230: 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  r the base direc
b240: 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
b250: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
b260: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
b270: 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  = GetSettingValu
b280: 65 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e("PreLoadSQLite
b290: 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c  _BaseDirectory",
b2a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b2b0: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
b2c0: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
b2d0: 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
b2e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
b2f0: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23   directory;....#
b300: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b310: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b320: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b330: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
b340: 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
b350: 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
b360: 79 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69  yDirectory" envi
b370: 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
b380: 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69     //       vari
b390: 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20  able is set (to 
b3a0: 61 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20  anything), then 
b3b0: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
b3c0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
b3d0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
b3e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
b3f0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
b400: 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20  ing assembly..  
b410: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b420: 20 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61   (i.e. System.Da
b430: 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65  ta.SQLite) intse
b440: 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63  ad of the applic
b450: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ation..         
b460: 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e   //       domain
b470: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e   base directory.
b480: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b490: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65            if (Ge
b4a0: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
b4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4c0: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
b4d0: 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65  _UseAssemblyDire
b4e0: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
b4f0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
b500: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b510: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
b520: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
b530: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
b540: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
b550: 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
b560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b570: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
b580: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ry;..          }
b590: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
b5a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
b5b0: 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20  OTE: Otherwise, 
b5c0: 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e  fallback on usin
b5d0: 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  g the base direc
b5e0: 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20  tory of the..   
b5f0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
b600: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
b610: 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20  ion domain...   
b620: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b630: 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44       return AppD
b640: 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d  omain.CurrentDom
b650: 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72  ain.BaseDirector
b660: 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  y;..#else..     
b670: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b680: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
b690: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
b6a0: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69 72  on using the dir
b6b0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
b6c0: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  g..          // 
b6d0: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
b6e0: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
b6f0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20  sembly...       
b700: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b710: 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d   return GetAssem
b720: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
b730: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
b740: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b7a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b7b0: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
b7c0: 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  f the dynamic li
b7d0: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
b7e0: 6e 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20  name requires a 
b7f0: 73 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f  suffix..      //
b800: 2f 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66  / and adds it if
b810: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
b820: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b830: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
b840: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
b850: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
b860: 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e  The original dyn
b870: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
b880: 79 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69  y file name to i
b890: 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  nspect...      /
b8a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
b8b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
b8c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
b8d0: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
b8e0: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20  rary file name, 
b8f0: 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65  possibly modifie
b900: 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d  d to include an.
b910: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e  .      /// exten
b920: 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sion...      ///
b930: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
b940: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b950: 63 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c  c string FixUpDl
b960: 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20  lFileName(..    
b970: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
b980: 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  eName /* in */..
b990: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b9a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b9b0: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
b9c0: 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
b9d0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
b9e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b9f0: 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
ba00: 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d  ds.IsWindows()).
ba10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
ba20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba30: 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d      if (!fileNam
ba40: 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69  e.EndsWith(DllFi
ba50: 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20  leExtension,..  
ba60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba70: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
ba80: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
ba90: 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
baa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bab0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
bac0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bad0: 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69  fileName + DllFi
bae0: 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20  leExtension;..  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
bb10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
bb20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
bb30: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  urn fileName;.. 
bb40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
bba0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bbb0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
bbc0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
bbd0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
bbe0: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
bbf0: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
bc00: 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  // process...   
bc10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
bc20: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
bc30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
bc40: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
bc50: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
bc60: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
bc70: 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ess -OR- null if
bc80: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
bc90: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
bca0: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
bcb0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
bcc0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
bcd0: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
bce0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
bcf0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
bd00: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
bd10: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
bd20: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
bd30: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
bd40: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
bd50: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
bd60: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
bd70: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
bd80: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
bd90: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
bda0: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
bdb0: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
bdc0: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
bdd0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
bde0: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
bdf0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
be00: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
be10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be20: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
be30: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
be40: 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  ture", null);...
be50: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
be60: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
be70: 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ture != null).. 
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
be90: 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  urn processorArc
bea0: 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20  hitecture;....  
beb0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
bec0: 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a        // BUGBUG:
bed0: 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79   Will this alway
bee0: 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a  s be reliable?..
bef0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
bf00: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
bf10: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
bf20: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
bf30: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
bf40: 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a  ECTURE, null);..
bf50: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
bf60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfa0: 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
bfb0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
bfc0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
bfd0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
bfe0: 48 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20  HACK: Check for 
bff0: 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20  an "impossible" 
c000: 73 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74  situation.  If t
c010: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d  he pointer size.
c020: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
c030: 20 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20      is 32-bits, 
c040: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
c050: 63 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f  chitecture canno
c060: 74 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20  t be "AMD64"... 
c070: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c080: 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20    In that case, 
c090: 77 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65  we are almost ce
c0a0: 72 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20  rtainly hitting 
c0b0: 61 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20  a bug in the..  
c0c0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
c0d0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
c0e0: 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20  m and/or Visual 
c0f0: 53 74 75 64 69 6f 20 74 68 61 74 20 63 61 75 73  Studio that caus
c100: 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  es the..        
c110: 20 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45    //       PROCE
c120: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
c130: 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  E environment va
c140: 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69  riable to contai
c150: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
c160: 20 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20   //       wrong 
c170: 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69  value in some ci
c180: 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c  rcumstances.  Pl
c190: 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 69  ease refer to ti
c1a0: 63 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  cket..          
c1b0: 2f 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38 36  //       [9ac986
c1c0: 32 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65  2611] for furthe
c1d0: 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  r information...
c1e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c1f0: 20 20 20 20 20 20 20 20 69 66 20 28 28 49 6e 74          if ((Int
c200: 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65  Ptr.Size == size
c210: 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20  of(int)) &&..   
c220: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
c230: 67 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73  g.Equals(process
c240: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
c250: 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20  "AMD64",..      
c260: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
c270: 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
c280: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
c290: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
c2a0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
c2b0: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
c2c0: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
c2d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c2e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c2f0: 57 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20  When tracing is 
c300: 65 6e 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68  enabled, save th
c310: 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74  e originally det
c320: 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20  ected..         
c330: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
c340: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
c350: 74 75 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e  ture before chan
c360: 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20  ging it...      
c370: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
c380: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
c390: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
c3a0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 70 72  rchitecture = pr
c3b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
c3c0: 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ure;..#endif....
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c3e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c3f0: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77  // NOTE: We know
c400: 20 74 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20   that operating 
c410: 73 79 73 74 65 6d 73 20 74 68 61 74 20 72 65 74  systems that ret
c420: 75 72 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a  urn "AMD64" as..
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c440: 20 20 20 20 20 20 20 74 68 65 20 70 72 6f 63 65         the proce
c450: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c460: 65 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61  e are actually a
c470: 20 73 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20   superset of..  
c480: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c490: 20 20 20 20 20 74 68 65 20 22 78 38 36 22 20 70       the "x86" p
c4a0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
c4b0: 63 74 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65  cture; therefore
c4c0: 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20  , return..      
c4d0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
c4e0: 20 22 78 38 36 22 20 77 68 65 6e 20 74 68 65 20   "x86" when the 
c4f0: 70 6f 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20  pointer size is 
c500: 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20  32-bits...      
c510: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
c520: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
c530: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
c540: 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20  = "x86";....#if 
c550: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
c560: 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
c570: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
c580: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
c590: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c5a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68  // NOTE: Show th
c5d0: 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69 72  at we hit a fair
c5e0: 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61  ly unusual situa
c5f0: 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20  tion (i.e...    
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c610: 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e         the "wron
c620: 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  g" processor arc
c630: 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64 65  hitecture was de
c640: 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  tected)...      
c650: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c670: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
c680: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
c690: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6b0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
c6c0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
c6d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6e0: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
c6f0: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
c700: 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d  er detected {0}-
c710: 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d  bit pointer " +.
c720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c730: 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69 74         "size wit
c740: 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  h processor arch
c750: 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22  itecture \"{1}\"
c760: 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20  , using " +..   
c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c780: 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72     "processor ar
c790: 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d  chitecture \"{2}
c7a0: 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d  \" instead...",.
c7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c7c0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69         IntPtr.Si
c7d0: 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a  ze * 8 /* bits *
c7e0: 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f  /, savedProcesso
c7f0: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a  rArchitecture,..
c800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c810: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
c820: 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f  rchitecture)); /
c830: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
c840: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
c850: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
c860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c870: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c880: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
c890: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
c8a0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
c8b0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
c8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
c8d0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c8e0: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
c8f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c900: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
c910: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c920: 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
c930: 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
c940: 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ork, attempt to 
c950: 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  use the native..
c960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c970: 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50 49         Win32 API
c980: 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50   function (via P
c990: 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61  /Invoke) that ca
c9a0: 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20  n provide us..  
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c9c0: 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70 72       with the pr
c9d0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
c9e0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
c9f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ca00: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ca10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ca30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ca40: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
ca50: 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20  e output of the 
ca60: 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75  GetSystemInfo fu
ca70: 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a  nction will be..
ca80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca90: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65    //       place
caa0: 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68  d here.  Only th
cab0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
cac0: 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a  itecture field..
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73    //       is us
caf0: 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f  ed by this metho
cb00: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
cb10: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
cb30: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57  feNativeMethodsW
cb40: 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f  in32.SYSTEM_INFO
cb50: 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a   systemInfo;....
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb70: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
cb80: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
cb90: 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74 65   Query the syste
cba0: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69  m information vi
cbb0: 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73  a P/Invoke, thus
cbc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cbd0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c      //       fil
cbe0: 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75  ling the structu
cbf0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
cc00: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
cc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
cc20: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
cc30: 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49  Win32.GetSystemI
cc40: 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e  nfo(out systemIn
cc50: 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  fo);....        
cc60: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
cc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc80: 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20  // NOTE: Return 
cc90: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
cca0: 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75 65  chitecture value
ccb0: 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   as a string... 
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
cce0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
ccf0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a  Architecture =..
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd10: 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f        systemInfo
cd20: 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  .wProcessorArchi
cd30: 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67  tecture.ToString
cd40: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
cd50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
cd60: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
cd70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cd90: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cdb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
cdc0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
cdd0: 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66   // NOTE: Upon f
cde0: 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61  ailure, return a
cdf0: 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20  n empty string. 
ce00: 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65   This will preve
ce10: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
ce20: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
ce30: 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72  alling method fr
ce40: 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74  om considering t
ce50: 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20  his method call 
ce60: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
ce70: 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75   //       "failu
ce80: 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  re"...          
ce90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
cea0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
ceb0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
cec0: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
ced0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
cee0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
cef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
cf40: 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f   return processo
cf50: 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
cf60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cf70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cf80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
cfc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cfd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e  .      /// Given
cfe0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
cff0: 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74  rchitecture, ret
d000: 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  urns the name of
d010: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a   the platform...
d020: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d040: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
d050: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
d060: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
d070: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
d080: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65  chitecture to be
d090: 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61   translated to a
d0a0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
d0b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
d0c0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
d0d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
d0e0: 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d  /// The platform
d0f0: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70   name for the sp
d100: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
d110: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d  r architecture -
d120: 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  OR- null..      
d130: 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  /// if it cannot
d140: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
d150: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
d160: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
d170: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
d180: 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ng GetPlatformNa
d190: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me(..          s
d1a0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
d1b0: 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69  rchitecture /* i
d1c0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
d1d0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
d1e0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
d1f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
d200: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
d210: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
d220: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
d230: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
d240: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
d250: 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
d260: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
d270: 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  y(processorArchi
d280: 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20  tecture))..     
d290: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
d2a0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
d2b0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
d2c0: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
d2d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d2e0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
d2f0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
d300: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
d310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d320: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
d330: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d340: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
d350: 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  mName;....      
d360: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
d370: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d380: 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65  ePlatforms.TryGe
d390: 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  tValue(..       
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
d3b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
d3c0: 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f  ture, out platfo
d3d0: 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  rmName))..      
d3e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d400: 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
d410: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d420: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
d430: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
d440: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
d450: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
d460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4a0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
d4b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d4c0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
d4d0: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
d4e0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
d4f0: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70   based on the sp
d500: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
d510: 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64  // directory and
d520: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
d530: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
d540: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d550: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d560: 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
d570: 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
d580: 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63  / The base direc
d590: 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c  tory to use, nul
d5a0: 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
d5b0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
d5c0: 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y of..      /// 
d5d0: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
d5e0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e  ication domain).
d5f0: 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79    This directory
d600: 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
d610: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
d620: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
d630: 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73  cture specific s
d640: 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d  ub-directories..
d650: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
d660: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
d670: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
d680: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d690: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
d6a0: 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f  he requested pro
d6b0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d6c0: 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  ure, null for de
d6d0: 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20  fault (the..    
d6e0: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
d6f0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
d700: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
d710: 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c  ess).  This call
d720: 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  er should..     
d730: 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61   /// almost alwa
d740: 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20  ys specify null 
d750: 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74  for this paramet
d760: 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  er...      /// <
d770: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
d780: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d790: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
d7a0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
d7b0: 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20  / The candidate 
d7c0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69  native module fi
d7d0: 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20  le name to load 
d7e0: 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68  will be stored h
d7f0: 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ere,..      /// 
d800: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
d810: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
d820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
d830: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
d840: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a  ModuleHandle">..
d850: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
d860: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
d870: 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62  le as returned b
d880: 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69  y LoadLibrary wi
d890: 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20  ll be stored..  
d8a0: 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66      /// here, if
d8b0: 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69   necessary.  Thi
d8c0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
d8d0: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74  IntPtr.Zero if t
d8e0: 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20  he call to..    
d8f0: 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72    /// LoadLibrar
d900: 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  y fails...      
d910: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d920: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
d930: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
d940: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74  -zero if the nat
d950: 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c  ive module was l
d960: 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c  oaded successful
d970: 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  ly; otherwise,..
d980: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d        /// zero..
d990: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
d9a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
d9b0: 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
d9c0: 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c   PreLoadSQLiteDl
d9d0: 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  l(..          st
d9e0: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
d9f0: 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f  ry,            /
da00: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
da10: 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
da20: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
da30: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
da40: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
da50: 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  ng nativeModuleF
da60: 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20  ileName, /* out 
da70: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  */..          re
da80: 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d  f IntPtr nativeM
da90: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f  oduleHandle    /
daa0: 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
dab0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
dac0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dad0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
dae0: 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
daf0: 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  d base directory
db00: 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
db10: 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20  e default..     
db20: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69       //       (i
db30: 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61  .e. attempt to a
db40: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74  utomatically det
db50: 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20  ect it)...      
db60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
db70: 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
db80: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
db90: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
dba0: 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42  Directory = GetB
dbb0: 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  aseDirectory();.
dbc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
dbd0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
dbe0: 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
dbf0: 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61   to query the ba
dc00: 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74  se directory, st
dc10: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
dc20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
dc30: 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
dc40: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
dc50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
dc60: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
dc70: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
dc80: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74      // NOTE: Det
dc90: 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20  ermine the base 
dca0: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
dcb0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
dcc0: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
dcd0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20      //       If 
dce0: 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77  this is not know
dcf0: 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c  n by this class,
dd00: 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69   we cannot conti
dd10: 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nue...          
dd20: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
dd30: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ring fileNameOnl
dd40: 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62  y = GetNativeLib
dd50: 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
dd60: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
dd70: 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
dd80: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
dd90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
dda0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
ddb0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
ddc0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
ddd0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
dde0: 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20   library exists 
ddf0: 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65  in the base dire
de00: 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  ctory..         
de10: 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66   //       itself
de20: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
de30: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
de40: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
de50: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
de60: 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d  ileName(MaybeCom
de70: 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69 72  binePath(baseDir
de80: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
de90: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f         fileNameO
dea0: 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly));....      
deb0: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
dec0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dee0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
def0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
df00: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
df10: 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
df20: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
df30: 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c  tecture is null,
df40: 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
df50: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66      //       def
df60: 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  ault...         
df70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
df80: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
df90: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
dfa0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dfb0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
dfc0: 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
dfd0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
dfe0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
dff0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e000: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
e010: 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74  ailed to query t
e020: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
e030: 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20  hitecture, stop 
e040: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
e050: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
e060: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
e070: 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
e080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e090: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
e0a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
e0b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
e0c0: 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
e0d0: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
e0e0: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
e0f0: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
e100: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
e110: 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
e120: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
e130: 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20  ecture name...  
e140: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e150: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
e160: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
e170: 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  e(MaybeCombinePa
e180: 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  th(MaybeCombineP
e190: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
e1a0: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
e1b0: 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  y, processorArch
e1c0: 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e  itecture), fileN
e1d0: 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
e1e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e1f0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
e200: 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  f the file name 
e210: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f  based on the pro
e220: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
e230: 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ure name..      
e240: 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f      // is not fo
e250: 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74  und, try using t
e260: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c  he associated pl
e270: 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20  atform name...  
e280: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e290: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
e2a0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
e2b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2e0: 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
e2f0: 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
e300: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
e310: 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20  itecture to a.. 
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e330: 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e        platform n
e340: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
e350: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e360: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
e370: 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50  tformName = GetP
e380: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63  latformName(proc
e390: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
e3a0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
e3b0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
e3c0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e3d0: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
e3e0: 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c  translate the pl
e3f0: 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f  atform name, sto
e400: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
e410: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e420: 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61 74          if (plat
e430: 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  formName == null
e440: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e450: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
e460: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
e470: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e480: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
e490: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
e4a0: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
e4b0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
e4c0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
e4d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
e4e0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
e4f0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
e500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
e510: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
e520: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55   fileName = FixU
e530: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79  pDllFileName(May
e540: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61  beCombinePath(Ma
e550: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d  ybeCombinePath(.
e560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e570: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
e580: 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c  , platformName),
e590: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
e5a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e5b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e5c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
e5d0: 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
e5e0: 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72  t exist, skip tr
e5f0: 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e  ying to load it.
e600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e610: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
e620: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
e630: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
e640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e650: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
e660: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
e670: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
e680: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
e690: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
e6a0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
e6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
e6c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
e6d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e6e0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
e6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e700: 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
e710: 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
e720: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
e730: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e750: 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
e760: 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e790: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
e7a0: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
e7b0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
e7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e7d0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
e7e0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
e7f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
e800: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
e810: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
e820: 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20 74  ader is trying t
e830: 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
e840: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
e850: 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
e860: 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
e870: 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29  ...", fileName))
e880: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
e8b0: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
e8c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e8d0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
e8e0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
e8f0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
e900: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e910: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e920: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
e930: 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  mpt to load the 
e940: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20  native library. 
e950: 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65   This will eithe
e960: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
e970: 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e   //       return
e980: 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20   a valid native 
e990: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72  module handle, r
e9a0: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
e9b0: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
e9c0: 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68    //       or th
e9d0: 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  row an exception
e9e0: 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73 65  .  This must use
e9f0: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
ea00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ea10: 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b  //       P/Invok
ea20: 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65  e method for the
ea30: 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
ea40: 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20  ng system...    
ea50: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
ea70: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
ea80: 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
eaa0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
eab0: 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65   NativeLibraryHe
eac0: 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79  lper.LoadLibrary
ead0: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
eaf0: 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c  urn (nativeModul
eb00: 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  eHandle != IntPt
eb10: 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
eb20: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
eb30: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
eb40: 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
eb50: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
eb60: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
eb70: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
eb80: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
eb90: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
eba0: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
ebb0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
ebc0: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
ebd0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
ebe0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec00: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
ec10: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
ec20: 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20  First, grab the 
ec30: 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72  last Win32 error
ec40: 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec70: 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20    int lastError 
ec80: 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73  = Marshal.GetLas
ec90: 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f  tWin32Error(); /
eca0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ecd0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
ece0: 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61 69  how where we fai
ecf0: 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  led to load the 
ed00: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed20: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
ed30: 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74  y from along wit
ed40: 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f  h the Win32 erro
ed50: 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20  r code and..    
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ed70: 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e         exception
ed80: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
edb0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
edc0: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
edd0: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
ede0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
edf0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
ee00: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
ee10: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
ee20: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
ee30: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
ee40: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
ee50: 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20  o load native " 
ee60: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
ee70: 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74 65           "SQLite
ee80: 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
ee90: 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d   (getLastError =
eea0: 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20   {1}): {2}",..  
eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eec0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61      fileName, la
eed0: 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a  stError, e)); /*
eee0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
eef0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ef00: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
ef10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
ef20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef30: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
ef40: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
ef50: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
ef60: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ef70: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
ef80: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
ef90: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
efa0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
efb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
efc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f000: 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
f010: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f020: 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  RK..    //..    
f030: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
f040: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
f050: 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69  mework, the nati
f060: 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  ve interop assem
f070: 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f  bly must..    //
f080: 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62         be used b
f090: 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69 64  ecause it provid
f0a0: 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61  es several worka
f0b0: 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43  rounds to .NET C
f0c0: 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20  ompact..    //  
f0d0: 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c       Framework l
f0e0: 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72  imitations impor
f0f0: 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20  tant for proper 
f100: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
f110: 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20   core..    //   
f120: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
f130: 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61  SQLite functiona
f140: 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67  lity (e.g. being
f150: 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20   able to bind.. 
f160: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61     //       para
f170: 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c  meters and handl
f180: 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  e column values 
f190: 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20 61  of types Int64 a
f1a0: 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20  nd Double)...   
f1b0: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
f1c0: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
f1d0: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
f1e0: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 33 2e  ite.Interop.103.
f1f0: 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c  dll";..#elif SQL
f200: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
f210: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
f220: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66  E: Otherwise, if
f230: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
f240: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73 20  Lite library is 
f250: 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e  enabled, use it.
f260: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
f270: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
f280: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
f290: 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
f2a0: 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  if USE_INTEROP_D
f2b0: 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  LL..    //..    
f2c0: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
f2d0: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
f2e0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
f2f0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
f300: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
f310: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
f320: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
f330: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
f340: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
f350: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
f360: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
f370: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
f380: 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
f390: 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
f3a0: 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
f3b0: 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
f3c0: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
f3d0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
f3e0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
f3f0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
f400: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
f410: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
f420: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
f430: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
f440: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
f450: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
f460: 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
f470: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
f480: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
f490: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
f4a0: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
f4b0: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
f4c0: 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
f4d0: 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
f4e0: 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
f4f0: 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
f500: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
f510: 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
f520: 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
f530: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
f540: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
f550: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f560: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f570: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f580: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
f590: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
f5a0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
f5b0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f5c0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
f5d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f5e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
f5f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f600: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f610: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
f620: 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
f630: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
f640: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
f650: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
f660: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f670: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
f680: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f690: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
f6a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
f6b0: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
f6c0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
f6d0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
f6e0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
f6f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f700: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
f710: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f720: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
f730: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
f740: 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
f750: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
f760: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
f770: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f780: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f790: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f7a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f7b0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
f7c0: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
f7d0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
f7e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
f7f0: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
f800: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f810: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
f820: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f830: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
f840: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
f850: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
f860: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
f870: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
f880: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
f890: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
f8a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f8b0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
f8c0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
f8d0: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
f8e0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
f8f0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
f900: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
f910: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f920: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
f930: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f940: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
f950: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
f960: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
f970: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
f980: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
f990: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
f9a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f9b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f9c0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
f9d0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
f9e0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
f9f0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
fa00: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
fa10: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
fa20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fa30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
fa40: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fa50: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
fa60: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
fa70: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
fa80: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
fa90: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
faa0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
fab0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fac0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
fad0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fae0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
faf0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
fb00: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
fb10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
fb20: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
fb30: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
fb40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fb50: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
fb60: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
fb70: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
fb80: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
fb90: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
fba0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
fbb0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
fbc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fbd0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
fbe0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fbf0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
fc00: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
fc10: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
fc20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
fc30: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
fc40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fc50: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
fc60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fc70: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
fc80: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
fc90: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
fca0: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
fcb0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
fcc0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
fcd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fce0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fcf0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fd00: 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
fd10: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
fd20: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
fd30: 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
fd40: 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
fd50: 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
fd60: 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
fd70: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
fd80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
fd90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fda0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fdb0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fdc0: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
fdd0: 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
fde0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
fdf0: 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
fe00: 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
fe10: 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
fe20: 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
fe30: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
fe40: 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
fe50: 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
fe60: 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
fe70: 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
fe80: 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
fe90: 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
fea0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
feb0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fec0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fed0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
fee0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
fef0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
ff00: 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
ff10: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
ff20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ff30: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
ff40: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ff50: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
ff60: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
ff70: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
ff80: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
ff90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ffa0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
ffb0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ffc0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
ffd0: 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
ffe0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
fff0: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
10000 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
10010 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10020 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10030 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10040 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10050 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
10060 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
10070 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
10080 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
10090 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
100a0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
100b0 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
100c0 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
100d0 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
100e0 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
100f0 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
10100 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
10110 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
10120 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
10130 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
10140 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
10150 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
10160 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
10170 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
10180 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
10190 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
101a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
101b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
101c0 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
101d0 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
101e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
101f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
10200 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10210 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
10220 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
10230 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
10240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10250 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10260 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
10270 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
10280 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
10290 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
102a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
102b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
102c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
102d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
102e0 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
102f0 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
10300 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
10310 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10320 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10330 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10340 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10350 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
10360 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
10370 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10380 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
10390 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
103a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
103b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
103c0 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
103d0 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
103e0 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
103f0 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
10400 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
10410 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
10420 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
10430 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
10440 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
10450 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
10460 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
10470 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
10480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10490 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
104a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
104b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
104c0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
104d0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
104e0 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [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 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
10510 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10520 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10530 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
10540 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
10550 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
10560 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10570 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
10580 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10590 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
105a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
105b0 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65  _blob_close_inte
105c0 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29  rop(IntPtr blob)
105d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
105e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
105f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10600 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10610 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10620 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
10630 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
10640 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
10650 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
10660 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
10670 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
10680 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
10690 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
106a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
106b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
106c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
106d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
106e0 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f  e3_open16_intero
106f0 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
10700 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66  ename, byte[] vf
10710 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  sName, SQLiteOpe
10720 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
10730 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20  , int extFuncs, 
10740 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
10750 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
10760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10770 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10780 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10790 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
107a0 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
107b0 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
107c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
107d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
107e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
107f0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10800 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
10810 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
10820 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
10830 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
10840 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
10850 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
10860 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
10870 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
10880 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
10890 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
108a0 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
108b0 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
108c0 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
108d0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
108e0 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
108f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10900 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10910 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10930 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10940 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10950 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10960 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10970 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10980 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10990 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
109a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
109b0 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
109c0 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
109d0 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
109e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
109f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10a00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10a10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10a20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10a30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10a40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10a50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10a60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10a70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10a80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10a90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10aa0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
10ab0 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
10ac0 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
10ad0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
10ae0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10af0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10b00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10b10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10b20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10b30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10b40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10b50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10b60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10b70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10b80 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10b90 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
10ba0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
10bb0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
10bc0 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
10bd0 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
10be0 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
10bf0 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
10c00 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
10c10 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
10c20 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
10c30 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
10c40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10c50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10c60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10c70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10c80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10c90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10ca0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10cb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10cc0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10cd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10ce0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10cf0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10d00 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
10d10 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
10d20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10d30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10d40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10d50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10d60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10d70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10d80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10d90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10da0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10db0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10dc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10dd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10de0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
10df0 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
10e00 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
10e10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10e20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10e30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10e40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10e50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10e60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10e70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10e80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10e90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10ea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10eb0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10ec0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10ed0 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
10ee0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
10ef0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10f00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10f10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10f20 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10f30 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10f40 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10f50 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10f60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10f70 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10f80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10f90 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10fa0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
10fb0 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
10fc0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10fd0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10fe0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10ff0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11000 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11010 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11020 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11030 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11040 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11050 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11060 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11070 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11080 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11090 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
110a0 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
110b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
110c0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
110d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
110e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
110f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11100 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11110 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11120 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11130 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11150 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11160 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11170 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
11180 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
11190 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
111a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
111b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
111c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
111d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
111e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
111f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11200 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11210 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11220 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11230 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11240 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11250 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11260 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11270 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
11280 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
11290 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
112a0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
112b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
112c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
112d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
112e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
112f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11300 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11310 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11330 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11340 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11350 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11360 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
11370 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
11380 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
11390 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
113a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
113b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
113c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
113d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
113e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
113f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11400 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11410 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11420 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11430 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11440 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11450 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
11460 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11470 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
11480 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
114a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
114b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
114c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
114d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
114e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
114f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11500 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11510 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11520 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11530 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
11540 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
11550 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11560 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
11570 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11580 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11590 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
115a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
115b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
115c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
115d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
115e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
115f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11600 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11610 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11620 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
11630 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
11640 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
11650 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11660 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11670 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11680 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11690 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
116a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
116b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
116c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
116d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
116e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
116f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11700 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
11710 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
11720 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
11730 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11740 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
11750 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11760 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11770 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11780 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11790 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
117a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
117b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
117c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
117d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
117e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
117f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11800 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
11810 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
11820 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
11830 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11840 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11850 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11870 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11880 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11890 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
118a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
118b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
118c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
118d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
118e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
118f0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
11900 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
11910 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
11920 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11930 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11940 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11970 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11980 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11990 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
119a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
119b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
119c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
119d0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
119e0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
119f0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11a00 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
11a10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11a20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11a30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11a40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11a50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11a60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11a70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11a80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11a90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11aa0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11ab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11ac0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
11ad0 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
11ae0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11af0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
11b00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11b10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11b20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11b30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11b40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11b50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11b60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11b70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11b80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11b90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11ba0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11bb0 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
11bc0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
11bd0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11be0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11bf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11c00 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11c10 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11c20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11c30 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11c40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11c50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11c60 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11c70 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11c80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11c90 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
11ca0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
11cb0 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
11cc0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
11cd0 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
11ce0 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
11cf0 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
11d00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11d10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11d20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11d30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11d40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11d50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11d60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11d70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11d80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11d90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11da0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11db0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
11dc0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
11dd0 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
11de0 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
11df0 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
11e00 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
11e10 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
11e20 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
11e30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11e40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11e50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11e60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11e70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11e80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11e90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11ea0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11eb0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11ec0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11ed0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
11ee0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
11ef0 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
11f00 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
11f10 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
11f20 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
11f30 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
11f40 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
11f50 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
11f60 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
11f70 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
11f80 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
11f90 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
11fa0 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
11fb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11fc0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11fd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11fe0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11ff0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12000 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12010 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12020 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12030 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12040 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12050 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
12060 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
12070 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
12080 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
12090 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
120a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
120b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
120c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
120d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
120e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
120f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12100 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12110 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12120 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12130 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12140 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
12150 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
12160 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
12170 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
12180 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
12190 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
121a0 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
121b0 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
121c0 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
121d0 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
121e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
121f0 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
12200 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
12210 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
12220 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
12230 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
12240 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
12250 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
12260 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
12270 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
12280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12290 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
122a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
122b0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
122c0 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
122d0 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
122e0 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
122f0 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
12300 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
12310 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
12320 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12330 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
12340 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
12350 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
12360 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
12370 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
12380 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
12390 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
123a0 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
123b0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
123c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
123d0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
123e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
123f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12400 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
12410 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
12420 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
12430 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
12440 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
12450 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12460 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12470 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12480 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12490 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
124a0 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
124b0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
124c0 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
124d0 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
124e0 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
124f0 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
12500 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
12510 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
12520 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
12530 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
12540 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12550 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
12560 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12570 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
12580 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
12590 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
125a0 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
125b0 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
125c0 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
125d0 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
125e0 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
125f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
12600 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
12610 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
12620 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
12630 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
12640 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
12650 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
12660 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
12670 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
12680 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
12690 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
126a0 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
126b0 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
126c0 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
126d0 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
126e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
126f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12700 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12710 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12720 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12730 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12740 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12750 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12760 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12770 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12780 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12790 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
127a0 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
127b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
127c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
127d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
127e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
127f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12800 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12810 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12820 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12830 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12840 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12850 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12860 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
12870 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
12880 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12890 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
128a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
128b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
128c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
128d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
128e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
128f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12900 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12910 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12920 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12930 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12940 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
12950 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12960 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12970 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12980 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12990 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
129a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
129b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
129c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
129d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
129e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
129f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12a00 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
12a10 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
12a20 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
12a30 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
12a40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12a50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12a60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12a70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12a80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12a90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12aa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12ab0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ac0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12ad0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12ae0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12af0 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
12b00 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
12b10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12b20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12b30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12b40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12b50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12b60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12b70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12b80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12b90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12ba0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12bb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12bc0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12bd0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
12be0 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
12bf0 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  he(..        int
12c00 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
12c10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12c20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12c30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12c40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12c50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12c60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12c70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12c80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12c90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12ca0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12cb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12cc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12cd0 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
12ce0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
12cf0 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
12d00 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
12d10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12d20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12d30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12d40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
12d50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12d60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12d70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12d80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12d90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
12da0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
12db0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12dc0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
12dd0 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  e sqlite3_load_e
12de0 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
12df0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79     IntPtr db, by
12e00 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62  te[] fileName, b
12e10 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20  yte[] procName, 
12e20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
12e30 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
12e40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12e50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12e60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12e70 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12e80 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12e90 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12ea0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12eb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ec0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12ed0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12ee0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
12ef0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
12f00 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f  overload_functio
12f10 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  n(IntPtr db, Int
12f20 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  Ptr zName, int n
12f30 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49  Args);....#if WI
12f40 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54  NDOWS..#if !PLAT
12f50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12f60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12f70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12f80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12f90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12fa0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
12fb0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
12fc0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
12fd0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12fe0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
12ff0 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
13000 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
13010 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
13020 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
13030 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64  ite3_win32_set_d
13040 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65  irectory" SQLite
13050 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
13060 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
13070 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
13080 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
13090 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  s...    //..    
130a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
130b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
130c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77  orCode sqlite3_w
130d0 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f  in32_set_directo
130e0 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74  ry(uint type, st
130f0 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
13100 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f  #if !DEBUG // NO
13110 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57  TE: Should be "W
13120 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d  IN32HEAP && !MEM
13130 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41  DEBUG"..#if !PLA
13140 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13150 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13160 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13170 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13180 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13190 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
131a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
131b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
131c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
131d0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
131e0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
131f0 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
13200 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  " SQLite core li
13210 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69  brary function i
13220 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  s..    //       
13230 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f  only supported o
13240 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74  n Windows when t
13250 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20  he Win32 native 
13260 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d  allocator is in.
13270 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73  .    //       us
13280 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75  e (i.e. by defau
13290 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22  lt, in "Release"
132a0 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65   builds of Syste
132b0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20  m.Data.SQLite.. 
132c0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
132d0 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  ).  By default, 
132e0 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64  in "Debug" build
132f0 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61  s of System.Data
13300 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20  .SQLite, the..  
13310 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45    //       MEMDE
13320 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  BUG allocator is
13330 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a   used...    //..
13340 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13350 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13360 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13370 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
13380 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eap();....#if !P
13390 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
133a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
133b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
133c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
133d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
133e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
133f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13400 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13410 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13420 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
13430 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
13440 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
13450 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
13460 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
13470 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
13480 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
13490 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
134a0 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
134b0 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
134c0 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
134d0 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
134e0 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
134f0 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
13500 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
13510 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
13520 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
13530 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
13540 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
13550 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
13560 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
13570 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
13580 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
13590 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
135a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
135b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
135c0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
135d0 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75 69  pact_heap(ref ui
135e0 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65  nt largest);..#e
135f0 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
13600 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13610 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13620 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13630 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13640 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13660 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13670 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13680 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13690 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
136a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
136b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
136c0 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
136d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
136e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
136f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13700 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13710 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13720 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13730 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13740 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13750 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13760 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13770 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13780 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13790 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72  3_realloc(IntPtr
137a0 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23   p, int n);....#
137b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
137c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
137d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
137e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
137f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13800 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13810 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13830 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13840 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13850 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13860 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
13870 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
13880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
138a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
138b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
138c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
138d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
138e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
138f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13900 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13910 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13930 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13940 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
13950 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
13960 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  name, ref IntPtr
13970 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46   db, SQLiteOpenF
13980 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
13990 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b  byte[] vfsName);
139a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
139b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
139c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
139d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
139e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
139f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13a00 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
13a10 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
13a20 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
13a30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13a40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
13a50 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
13a60 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
13a70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13a80 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13a90 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13aa0 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
13ab0 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49   fileName, ref I
13ac0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
13ad0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13ae0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13af0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13b00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13b10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13b20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13b30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13b40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13b50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13b60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13b70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
13b80 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
13b90 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29  rrupt(IntPtr db)
13ba0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13bb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13bc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13bd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13be0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13bf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13c00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
13c10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13c20 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
13c30 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
13c40 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
13c50 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  db);..#endif....
13c60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13c70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13c80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13c90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13cb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13cc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13cd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13ce0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13cf0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13d00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13d10 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
13d20 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
13d30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13d40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13d50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13d60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13d70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13d80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
13da0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13db0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
13dc0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
13dd0 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  d();..#endif....
13de0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13df0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13e00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13e10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13e20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13e30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13e40 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
13e50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13e60 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
13e70 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
13e80 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  er(int resetFlag
13e90 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
13ea0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13eb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13ec0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13ed0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13ee0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13ef0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13f00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13f10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13f20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13f30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13f40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
13f50 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
13f60 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
13f70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13f80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13f90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13fa0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13fb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13fc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13fd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13fe0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14000 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14010 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14020 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14030 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
14040 75 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50  usy_timeout(IntP
14050 74 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d  tr db, int ms);.
14060 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14070 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14080 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
140a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
140b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
140c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
140d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
140e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
140f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14100 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14110 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
14120 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61  ode sqlite3_clea
14130 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74  r_bindings(IntPt
14140 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
14150 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14160 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14180 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14190 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
141a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
141b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
141c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
141d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
141e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
141f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
14200 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
14210 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49  ite3_bind_blob(I
14220 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14230 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61  index, Byte[] va
14240 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20  lue, int nSize, 
14250 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e  IntPtr nTransien
14260 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
14270 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14280 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14290 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
142a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
142b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
142c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
142d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
142e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
142f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14300 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
14310 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14320 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76   index, double v
14330 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
14340 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14350 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14360 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14370 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14380 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14390 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
143a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
143b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
143c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
143d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
143e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
143f0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14400 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
14410 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
14420 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20   int index, int 
14430 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  value);....    /
14440 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
14450 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
14460 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
14470 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76  bind_int"; howev
14480 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a  er, it has the..
14490 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72      //       cor
144a0 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74  rect type signat
144b0 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67  ure for an unsig
144c0 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74  ned (32-bit) int
144d0 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
144e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
144f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14500 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14510 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
14520 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
14530 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69  bind_int", Calli
14540 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14550 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14560 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14570 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14580 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
14590 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
145a0 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23  3_bind_int")]..#
145b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
145c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
145d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
145e0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
145f0 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
14600 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74   int index, uint
14610 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
14620 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14630 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14640 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14650 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14660 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14670 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14680 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
14690 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
146a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
146b0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
146c0 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
146d0 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67   int index, long
146e0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
146f0 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
14700 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
14710 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
14720 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
14730 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  t64"; however, i
14740 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
14750 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
14760 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
14770 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c  or an unsigned l
14780 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74  ong (64-bit) int
14790 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23  eger...    //..#
147a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
147b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
147c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
147d0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
147e0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
147f0 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c  bind_int64", Cal
14800 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14810 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14820 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
14830 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14840 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14850 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
14860 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74  ind_uint64(IntPt
14870 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14880 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  x, ulong value);
14890 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
148a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
148b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
148c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
148d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
148e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
148f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14900 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14920 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14930 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14940 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
14950 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
14960 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49  ite3_bind_null(I
14970 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14980 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
14990 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
149a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
149b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
149c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
149d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
149e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
149f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14a00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14a10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14a20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14a30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14a40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14a50 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e  te3_bind_text(In
14a60 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
14a70 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c  ndex, byte[] val
14a80 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
14a90 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
14aa0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14ab0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14ac0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14ad0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14ae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14af0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14b00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14b10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14b20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14b30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14b40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14b50 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14b60 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
14b70 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
14b80 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
14b90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14ba0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14bb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14bc0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14bd0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14be0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14bf0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14c00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14c10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14c20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14c30 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
14c40 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
14c50 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72  ter_index(IntPtr
14c60 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74   stmt, byte[] st
14c70 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  rName);....#if !
14c80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14c90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14ca0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14cb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14cc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14cd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14ce0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14cf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14d00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14d10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14d20 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
14d30 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63  sqlite3_column_c
14d40 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
14d50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14d60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14d70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14d80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14d90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14da0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14db0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14dc0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14dd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14de0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14df0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14e00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14e10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
14e20 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  tep(IntPtr stmt)
14e30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14e40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14e50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14e60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14e70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14e80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14e90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14ea0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14eb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14ec0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14ed0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14ee0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
14ef0 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
14f00 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a  IntPtr stmt); /*
14f10 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69   3.7.4+ */....#i
14f20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
14f30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
14f40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14f50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14f60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14f70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14f80 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
14f90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14fa0 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  rn double sqlite
14fb0 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28  3_column_double(
14fc0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
14fd0 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
14fe0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14ff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15000 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15010 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15030 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15040 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15050 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15070 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15090 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
150a0 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
150b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
150c0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
150d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
150e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
150f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15100 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15110 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15120 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15130 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15140 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
15150 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
15160 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
15170 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15180 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
15190 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
151a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
151b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
151c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
151d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
151e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
151f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15200 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15210 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
15220 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15230 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
15240 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
15250 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74  n_blob(IntPtr st
15260 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15270 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15280 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15290 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
152a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
152b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
152c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
152d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
152e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
152f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15300 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15310 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15320 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
15330 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74  column_bytes(Int
15340 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15350 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
15360 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15370 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15390 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
153a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
153b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
153c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
153d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
153e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
153f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15400 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
15410 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
15420 65 73 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  es16(IntPtr stmt
15430 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
15440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15470 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
154a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
154b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
154c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
154d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
154e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
154f0 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73  n TypeAffinity s
15500 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
15510 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  pe(IntPtr stmt, 
15520 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
15530 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15540 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15550 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15560 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15570 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15580 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15590 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
155a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
155b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
155c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
155d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
155e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
155f0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
15600 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20  ollation(IntPtr 
15610 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
15620 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  me, int nType, I
15630 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
15640 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75  LiteCollation fu
15650 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nc);....#if !PLA
15660 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15670 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15680 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15690 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
156a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
156b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
156c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
156d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
156e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
156f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15700 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
15710 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
15720 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  ount(IntPtr cont
15730 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
15740 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15750 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15760 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15770 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15780 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15790 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
157a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
157b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
157c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
157d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
157e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
157f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
15800 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  lob(IntPtr p);..
15810 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15820 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15840 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15850 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15860 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15870 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15880 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15890 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
158a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
158b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
158c0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
158d0 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74  alue_bytes(IntPt
158e0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
158f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15900 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15910 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15920 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15930 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15940 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15950 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15960 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15970 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15990 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
159a0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
159b0 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  s16(IntPtr p);..
159c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
159d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
159e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
159f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15a00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15a10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15a20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
15a30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15a40 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
15a50 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
15a60 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  le(IntPtr p);..#
15a70 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
15a80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15a90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15ab0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15ac0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15ad0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15ae0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15af0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15b00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15b10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15b20 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
15b30 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
15b40 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
15b50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15b60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15b70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15b80 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15b90 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15ba0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15bb0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
15bc0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15bd0 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
15be0 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50  value_int64(IntP
15bf0 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
15c00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15c10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15c20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15c30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15c40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15c50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15c60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15c70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15c90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15ca0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15cb0 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
15cc0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
15cd0 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  pe(IntPtr p);...
15ce0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15cf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15d10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15d20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15d30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15d40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15d60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15d70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15d80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15d90 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
15da0 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74  esult_blob(IntPt
15db0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
15dc0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
15dd0 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  ze, IntPtr pvRes
15de0 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
15df0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15e00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15e10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15e20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15e30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15e40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15e50 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
15e60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15e70 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
15e80 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ult_double(IntPt
15e90 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c  r context, doubl
15ea0 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
15eb0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
15ec0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15ed0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15ef0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15f00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15f10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15f20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15f30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15f40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15f50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15f60 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
15f70 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28  e3_result_error(
15f80 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
15f90 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69  byte[] strErr, i
15fa0 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
15fb0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15fc0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15fd0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15fe0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15ff0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16000 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16010 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
16020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16030 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
16040 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16050 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
16060 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
16070 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74  t_error_code(Int
16080 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
16090 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c  iteErrorCode val
160a0 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
160b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
160c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
160d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
160e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
160f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16100 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16110 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16120 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16130 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16140 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16150 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
16160 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
16170 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72  or_toobig(IntPtr
16180 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
16190 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
161a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
161b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
161c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
161d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
161e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
161f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16200 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16210 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16220 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16230 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
16240 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
16250 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49  lt_error_nomem(I
16260 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
16270 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16280 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16290 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
162a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
162b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
162c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
162d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
162e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
162f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16300 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16310 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16320 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16330 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e  _result_value(In
16340 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
16350 74 50 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  tPtr value);....
16360 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16370 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16380 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16390 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
163a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
163b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
163c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
163d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
163e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
163f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
16400 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
16410 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
16420 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e  sult_zeroblob(In
16430 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
16440 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
16450 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16460 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16470 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16480 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16490 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
164a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
164b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
164c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
164d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
164e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
164f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
16500 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
16510 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  _int(IntPtr cont
16520 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  ext, int value);
16530 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16540 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16550 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16570 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16580 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16590 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
165a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
165b0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
165c0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
165d0 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  64(IntPtr contex
165e0 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  t, long value);.
165f0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
16600 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16610 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16620 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16630 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16640 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16650 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16660 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16670 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16680 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16690 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
166a0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
166b0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
166c0 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  null(IntPtr cont
166d0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
166e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
166f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16700 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16710 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16720 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16730 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16740 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16750 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16760 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16770 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16780 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
16790 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
167a0 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
167b0 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
167c0 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
167d0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
167e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
167f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16800 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16810 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16820 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16830 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16840 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16850 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16860 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16870 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16880 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16890 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
168a0 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74  3_aggregate_cont
168b0 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
168c0 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  xt, int nBytes);
168d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
168e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
168f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16900 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16920 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16930 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
16940 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
16950 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
16960 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16970 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
16980 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
16990 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
169a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
169b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
169c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
169d0 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49  e3_bind_text16(I
169e0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
169f0 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
16a00 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
16a10 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
16a20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16a30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16a40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16a50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16a60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16a70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16a80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
16a90 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16aa0 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
16ab0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16ac0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
16ad0 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
16ae0 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
16af0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16b00 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
16b10 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
16b20 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20  _error16(IntPtr 
16b30 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
16b40 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
16b50 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
16b60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16b70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16b80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16b90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16ba0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16bb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
16bc0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
16bd0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
16be0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16bf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
16c00 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
16c10 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
16c20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
16c30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
16c40 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
16c50 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  t_text16(IntPtr 
16c60 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
16c70 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
16c80 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
16c90 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  rved);....#if IN
16ca0 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49  TEROP_CODEC || I
16cb0 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53  NTEROP_INCLUDE_S
16cc0 45 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  EE..#if !PLATFOR
16cd0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16ce0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16cf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16d00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16d10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16d20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16d30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16d40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16d50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16d60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16d70 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
16d80 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79  Code sqlite3_key
16d90 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
16da0 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
16db0 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
16dc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16dd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16de0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16df0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16e00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16e10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16e20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16e40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16e50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16e60 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
16e70 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
16e80 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62  _rekey(IntPtr db
16e90 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
16ea0 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64  t keylen);..#end
16eb0 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  if....#if INTERO
16ec0 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53  P_INCLUDE_ZIPVFS
16ed0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16ee0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16ef0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16f00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16f10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16f20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16f30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16f40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16f50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16f60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16f70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16f80 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e  rn void zipvfsIn
16f90 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20  it_v2();....#if 
16fa0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16fb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16fc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16fd0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16fe0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16ff0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17000 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17010 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17020 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17030 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17040 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
17050 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28  d zipvfsInit_v3(
17060 69 6e 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23  int regDflt);..#
17070 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
17080 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17090 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
170a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
170b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
170c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
170d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
170e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
170f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17100 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
17110 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17120 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
17130 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
17140 68 61 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64  handler(IntPtr d
17150 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69  b, int ops, SQLi
17160 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61  teProgressCallba
17170 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
17180 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
17190 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
171a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
171b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
171c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
171d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
171e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
171f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17210 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17220 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17230 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17240 50 74 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  Ptr sqlite3_set_
17250 61 75 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74  authorizer(IntPt
17260 72 20 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68  r db, SQLiteAuth
17270 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66  orizerCallback f
17280 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
17290 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
172a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
172b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
172c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
172d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
172e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
172f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17300 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17310 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17320 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
17330 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17340 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
17350 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
17360 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
17370 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
17380 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
17390 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
173a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
173b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
173c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
173d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
173e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
173f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17400 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17410 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17420 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17430 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17440 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
17450 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
17460 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
17470 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
17480 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
17490 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
174a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
174b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
174c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
174d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
174e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
174f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17500 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17510 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17520 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17530 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17540 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17550 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
17560 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
17570 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
17580 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
17590 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
175a0 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
175b0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
175c0 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
175d0 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
175e0 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
175f0 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
17600 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
17610 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
17620 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
17630 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
17640 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17650 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17660 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
17670 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17680 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
17690 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
176a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
176b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
176c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
176d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
176e0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
176f0 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
17700 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17710 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17720 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17730 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
17740 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
17750 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
17760 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
17770 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
17780 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
17790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
177a0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
177b0 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
177c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
177d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
177e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
177f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17800 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
17810 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
17820 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
17830 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17840 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17850 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
17860 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
17870 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
17880 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
17890 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
178a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
178b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
178c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
178d0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
178e0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
178f0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
17900 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17910 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17920 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17930 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17940 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
17950 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
17960 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
17970 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
17980 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
17990 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
179a0 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
179b0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
179c0 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
179d0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
179e0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
179f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17a00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17a10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17a20 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
17a30 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
17a40 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", Ca
17a50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17a60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17a70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17a80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17a90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
17aa0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
17ab0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
17ac0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17ad0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17ae0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
17af0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
17b00 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69  _config_int_refi
17b10 6e 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  nt(IntPtr db, SQ
17b20 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
17b30 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
17b40 65 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c  e, ref int resul
17b50 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
17b60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17b70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17b80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17b90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17ba0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17bb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17bc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17bd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17be0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17bf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17c00 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17c10 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
17c20 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
17c30 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
17c40 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
17c50 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
17c60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17c70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17c80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17c90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17cb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17cc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17cd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17ce0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17cf0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17d00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17d10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
17d20 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72  db_handle(IntPtr
17d30 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
17d40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17d50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17d70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17d80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17d90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17da0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17dc0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17dd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17de0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
17df0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
17e00 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d  te3_db_release_m
17e10 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29  emory(IntPtr db)
17e20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17e30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17e40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17e50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17e60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17e70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17e80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17e90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17ea0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17eb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17ec0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17ed0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17ee0 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
17ef0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
17f00 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
17f10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17f20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17f30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17f40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17f70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17f80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17f90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17fa0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17fb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17fc0 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  int sqlite3_db_r
17fd0 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64  eadonly(IntPtr d
17fe0 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65  b, IntPtr dbName
17ff0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18000 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18010 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18020 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18030 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
18040 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
18050 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  me", CallingConv
18060 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18070 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18080 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18090 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
180a0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
180b0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
180c0 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64  ilename")]..#end
180d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
180e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
180f0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
18100 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28  _filename_bytes(
18110 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
18120 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  ] dbName);....#i
18130 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18140 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18150 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18160 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18170 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18180 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18190 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
181a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
181b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
181c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
181d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
181e0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
181f0 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
18200 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
18210 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18220 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18230 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18250 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18260 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18270 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18280 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18290 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
182a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
182b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
182c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
182d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
182e0 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
182f0 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
18300 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
18310 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 72  ntPtr pvParam, r
18320 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ef IntPtr errMsg
18330 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18340 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18350 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18360 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18370 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18380 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18390 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
183a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
183b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
183c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
183d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
183e0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
183f0 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
18400 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  y(int nBytes);..
18410 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18420 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18430 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18440 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
18450 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
18460 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18470 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
18480 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18490 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
184a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
184b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
184c0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67  rn int sqlite3_g
184d0 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e  et_autocommit(In
184e0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
184f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18500 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18510 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18520 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18530 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18540 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18550 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18560 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18570 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18580 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18590 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
185a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
185b0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72  lite3_extended_r
185c0 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50  esult_codes(IntP
185d0 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66  tr db, int onoff
185e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
185f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18600 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18630 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18640 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18650 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18660 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18680 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18690 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
186a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
186b0 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62  rrcode(IntPtr db
186c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
186d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
186e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
186f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18700 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18710 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18720 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18730 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18750 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18760 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18770 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
18780 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
18790 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
187a0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
187b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
187c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
187d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
187e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
187f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18800 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18810 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18830 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18840 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18850 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18860 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
18870 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72 6f  rrstr(SQLiteErro
18880 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e  rCode rc); /* 3.
18890 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20  7.15+ */....    
188a0 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
188b0 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76  _log() takes a v
188c0 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
188d0 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
188e0 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
188f0 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
18900 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
18910 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77   calls.  For now
18920 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78  , we are only ex
18930 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20  posing a single 
18940 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20  string, and..   
18950 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74 68   // depend on th
18960 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d  e caller to form
18970 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a  at the string...
18980 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18990 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
189a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
189b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
189c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
189d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
189e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
189f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18a00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18a10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18a20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18a30 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f   void sqlite3_lo
18a40 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  g(SQLiteErrorCod
18a50 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74 65  e iErrCode, byte
18a60 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a  [] zFormat);....
18a70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18a80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18a90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18aa0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18ab0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18ac0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18ad0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18af0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18b00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18b10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18b20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18b30 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
18b40 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c  ntrol(IntPtr db,
18b50 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c   byte[] zDbName,
18b60 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20   int op, IntPtr 
18b70 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pArg);....#if !P
18b80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18b90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18ba0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18bb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18bc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18bd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18be0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18bf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18c00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18c10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18c20 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18c30 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  r sqlite3_backup
18c40 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65 73  _init(IntPtr des
18c50 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73  tDb, byte[] zDes
18c60 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f  tName, IntPtr so
18c70 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a  urceDb, byte[] z
18c80 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  SourceName);....
18c90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18ca0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18cb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18cc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
18cd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
18ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18cf0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18d10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18d20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18d30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18d40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18d50 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
18d60 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63 6b  step(IntPtr back
18d70 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d  up, int nPage);.
18d80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18d90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18da0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18db0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18dc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18dd0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18de0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18df0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18e00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
18e10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18e20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18e30 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
18e40 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67  backup_remaining
18e50 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
18e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
18f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18f10 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
18f20 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e  _backup_pagecoun
18f30 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  t(IntPtr backup)
18f40 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18f50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18f60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18f70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18f80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18f90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18fa0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18fb0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18fc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18fd0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18fe0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18ff0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19000 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
19010 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  ob_close(IntPtr 
19020 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  blob);....#if !P
19030 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19040 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19050 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19060 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19070 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19080 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19090 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
190a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
190b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
190c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
190d0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
190e0 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65  qlite3_blob_byte
190f0 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  s(IntPtr blob);.
19100 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19110 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19120 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19130 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19150 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19160 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19170 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19190 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
191a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
191b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
191c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
191d0 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62 2c  _open(IntPtr db,
191e0 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
191f0 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
19200 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
19210 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74 20  long rowId, int 
19220 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50 74  flags, ref IntPt
19230 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23  r ptrBlob);....#
19240 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19250 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19260 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19270 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19280 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19290 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
192a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
192b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
192c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
192d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
192e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
192f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19300 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61  sqlite3_blob_rea
19310 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  d(IntPtr blob, [
19320 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
19330 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
19340 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
19350 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
19360 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
19370 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19380 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19390 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
193a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
193b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
193c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
193d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
193e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
193f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19400 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19410 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19420 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19430 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e  ite3_blob_reopen
19440 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f  (IntPtr blob, lo
19450 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69  ng rowId);....#i
19460 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19470 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19480 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19490 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
194a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
194b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
194c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
194d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
194e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
194f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19500 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19510 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19520 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74  qlite3_blob_writ
19530 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b  e(IntPtr blob, [
19540 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
19550 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79 29  gedType.LPArray)
19560 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72 2c  ] byte[] buffer,
19570 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20   int count, int 
19580 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  offset);....#if 
19590 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
195a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
195b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
195c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
195d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
195e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
195f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19600 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19610 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19620 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19630 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19640 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19650 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
19660 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  b(IntPtr db, Int
19670 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69  Ptr zSQL);....#i
19680 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19690 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
196a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
196b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
196c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
196d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
196e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
196f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19700 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19710 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19720 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19730 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70  ntPtr sqlite3_mp
19740 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72  rintf(IntPtr for
19750 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b  mat, __arglist);
19760 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
19770 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74  ....    // SQLit
19780 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74  e API calls that
19790 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79   are provided by
197a0 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78   "well-known" ex
197b0 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61  tensions that ma
197c0 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d  y be statically.
197d0 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77  .    // linked w
197e0 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
197f0 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ore native libra
19800 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20  ry currently in 
19810 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  use...    #regio
19820 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69  n extension sqli
19830 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69  te api calls..#i
19840 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
19850 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
19860 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19870 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
19880 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19890 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
198a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
198b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
198c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
198d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
198e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
198f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19900 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
19910 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
19920 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
19930 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
19940 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71  Ptr name, ref sq
19950 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
19960 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  ule, IntPtr pCli
19970 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f  entData, xDestro
19980 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
19990 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
199a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
199b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
199c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
199d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
199e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
199f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19a00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19a10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19a20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19a30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19a40 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
19a50 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75  te3_dispose_modu
19a60 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  le(IntPtr pModul
19a70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
19a80 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
19a90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19ae0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71  ..    #region sq
19af0 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69  lite interop api
19b00 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d   calls (.NET Com
19b10 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f  pact Framework o
19b20 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f  nly)..#if PLATFO
19b30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19b40 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
19b50 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c  TANDARD..    [Dl
19b60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19b70 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19b80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19b90 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61   void sqlite3_la
19ba0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f  st_insert_rowid_
19bb0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
19bc0 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49  b, ref long rowI
19bd0 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
19be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19bf0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19c00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
19c10 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
19c20 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28  ry_used_interop(
19c30 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b  ref long bytes);
19c40 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
19c50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19c60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19c70 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
19c80 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
19c90 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
19ca0 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
19cb0 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
19cc0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19cd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19d00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19d10 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
19d20 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
19d30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
19d40 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
19d50 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
19d60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19d70 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19d80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19d90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19da0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19db0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
19dc0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
19dd0 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
19de0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19df0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19e00 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
19e10 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
19e20 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20  4_interop")]..  
19e30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19e40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19e50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19e60 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74  _bind_uint64_int
19e70 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19e80 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
19e90 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
19ea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19eb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19ec0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19ed0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
19ee0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
19ef0 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
19f00 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
19f10 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  dex, ref double 
19f20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
19f30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19f40 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
19f50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19f60 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
19f70 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74  column_int64_int
19f80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19f90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
19fa0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
19fb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19fc0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19fd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19fe0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
19ff0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
1a000 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
1a010 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  r p, ref double 
1a020 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
1a030 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a040 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1a050 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a060 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1a070 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
1a080 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
1a090 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
1a0a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1a0b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a0c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a0d0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1a0e0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
1a0f0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
1a100 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1a110 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
1a120 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1a130 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a140 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a150 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1a160 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1a170 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
1a180 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1a190 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
1a1a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1a1b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a1c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a1d0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1a1e0 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
1a1f0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
1a200 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
1a210 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20       IntPtr db, 
1a220 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74  IntPtr name, Int
1a230 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74  Ptr pModule, int
1a240 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61   iVersion, xCrea
1a250 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  te xCreate,..   
1a260 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43       xConnect xC
1a270 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64  onnect, xBestInd
1a280 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78  ex xBestIndex, x
1a290 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
1a2a0 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20  onnect,..       
1a2b0 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
1a2c0 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c  oy, xOpen xOpen,
1a2d0 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20   xClose xClose, 
1a2e0 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  xFilter xFilter,
1a2f0 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74 20  ..        xNext 
1a300 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66  xNext, xEof xEof
1a310 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  , xColumn xColum
1a320 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  n, xRowId xRowId
1a330 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  , xUpdate xUpdat
1a340 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67  e,..        xBeg
1a350 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63  in xBegin, xSync
1a360 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20   xSync, xCommit 
1a370 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61  xCommit, xRollba
1a380 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20  ck xRollback,.. 
1a390 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
1a3a0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
1a3b0 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  on, xRename xRen
1a3c0 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20  ame, xSavepoint 
1a3d0 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20  xSavepoint,..   
1a3e0 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78 52       xRelease xR
1a3f0 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63  elease, xRollbac
1a400 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c  kTo xRollbackTo,
1a410 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
1a420 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ata,..        xD
1a430 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65  estroyModule xDe
1a440 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23  stroyModule);..#
1a450 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c  endif..    // PL
1a460 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a470 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49  AMEWORK && !SQLI
1a480 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
1a490 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1a4a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a4f0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
1a500 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a  tive Delegates..
1a510 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
1a520 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
1a530 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a540 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a550 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1a560 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1a570 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a580 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a590 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1a5a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1a5b0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
1a5c0 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
1a5d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
1a5e0 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ux,..        int
1a5f0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
1a600 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1a610 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1a620 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1a630 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
1a640 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1a650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a6a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a6b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a6c0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1a6d0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1a6e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a6f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1a700 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1a710 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1a720 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d  rCode xConnect(.
1a730 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a740 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
1a750 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
1a760 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
1a770 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1a780 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
1a790 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1a7a0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
1a7b0 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
1a7c0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1a7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a810 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1a820 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a830 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1a840 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1a850 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1a860 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a870 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1a880 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1a890 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
1a8a0 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
1a8b0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1a8c0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a8d0 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a  pIndex..    );..
1a8e0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1a940 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a950 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1a960 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1a970 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1a980 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a990 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1a9a0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1a9b0 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f  ErrorCode xDisco
1a9c0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1a9d0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1a9e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1aa40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aa50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1aa60 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1aa70 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1aa80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1aa90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1aaa0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1aab0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1aac0 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
1aad0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1aae0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1ab40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ab50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ab60 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1ab70 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1ab80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ab90 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1aba0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1abb0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1abc0 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
1abd0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1abe0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
1abf0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
1ac00 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1ac60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ac70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ac80 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1ac90 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1aca0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1acb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1acc0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1acd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ace0 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
1acf0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
1ad00 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1ad60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ad70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ad80 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1ad90 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1ada0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1adb0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1adc0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1add0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1ade0 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
1adf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1ae00 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  sor,..        in
1ae10 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
1ae20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72     IntPtr idxStr
1ae30 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1ae40 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1ae50 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29  tPtr argv..    )
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 53 51 4c  lic delegate SQL
1af30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65  iteErrorCode xNe
1af40 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  xt(..        Int
1af50 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
1af60 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1af70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1afc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1afd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1afe0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1aff0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1b000 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b010 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1b020 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
1b030 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
1b040 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
1b050 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1b0b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b0c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b0d0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1b0e0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1b0f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b100 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1b110 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1b120 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1b130 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
1b140 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
1b150 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49  rsor,..        I
1b160 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
1b170 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64  .        int ind
1b180 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
1b190 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b1e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b1f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b200 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1b210 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1b220 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b230 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1b240 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1b250 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1b260 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20  rCode xRowId(.. 
1b270 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1b280 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
1b290 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
1b2a0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1b300 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b310 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b320 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1b330 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1b340 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b350 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1b360 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1b370 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1b380 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  e xUpdate(..    
1b390 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1b3a0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1b3b0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1b3c0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1b3d0 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
1b3e0 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  Id..    );....  
1b3f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b460 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1b470 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1b480 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b490 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1b4a0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1b4b0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1b4c0 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
1b4d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1b4e0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1b4f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b540 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b550 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b560 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1b570 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1b580 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b590 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1b5a0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1b5b0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1b5c0 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
1b5d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1b5e0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1b5f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b640 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b650 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b660 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1b670 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1b680 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b690 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1b6a0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1b6b0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1b6c0 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d  orCode xCommit(.
1b6d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1b6e0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1b6f0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b750 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b760 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b770 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b780 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b790 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b7a0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b7b0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1b7c0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
1b7d0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ck(..        Int
1b7e0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
1b7f0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b840 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1b850 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b860 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1b870 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1b880 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1b890 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b8a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1b8b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
1b8c0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d   xFindFunction(.
1b8d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1b8e0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1b8f0 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20  int nArg,..     
1b900 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c     IntPtr zName,
1b910 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53 51  ..        ref SQ
1b920 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c  LiteCallback cal
1b930 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1b940 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65 72  ref IntPtr pUser
1b950 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Data..    );....
1b960 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b9b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b9c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b9d0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1b9e0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1b9f0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1ba00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1ba10 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1ba20 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
1ba30 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28  rorCode xRename(
1ba40 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ba50 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1ba60 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20   IntPtr zNew..  
1ba70 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bac0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1bad0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1bae0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1baf0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1bb00 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1bb10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bb20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1bb30 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1bb40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1bb50 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
1bb60 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1bb70 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
1bb80 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
1bb90 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbc0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1bbf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1bc00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1bc10 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1bc20 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1bc30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1bc40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1bc50 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1bc60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
1bc70 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
1bc80 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1bc90 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
1bca0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
1bcb0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1bd10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1bd20 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1bd30 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1bd40 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1bd50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1bd60 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1bd70 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1bd80 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
1bd90 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1bda0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1bdb0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1bdc0 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
1bdd0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1bde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1be30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1be40 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1be50 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1be60 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1be70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1be80 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1be90 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44  delegate void xD
1bea0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74  estroyModule(Int
1beb0 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29  Ptr pClientData)
1bec0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
1bed0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1bee0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1bf30 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
1bf40 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23  ve Structures..#
1bf50 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
1bf60 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53  AL_TABLE..    [S
1bf70 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1bf80 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1bf90 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1bfa0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1bfb0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a  _module..    {..
1bfc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1bfd0 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
1bfe0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 72        public xCr
1bff0 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20  eate xCreate;.. 
1c000 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43         public xC
1c010 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b  onnect xConnect;
1c020 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c030 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73   xBestIndex xBes
1c040 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  tIndex;..       
1c050 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e   public xDisconn
1c060 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b  ect xDisconnect;
1c070 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c080 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72   xDestroy xDestr
1c090 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  oy;..        pub
1c0a0 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b  lic xOpen xOpen;
1c0b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c0c0 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d   xClose xClose;.
1c0d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c0e0 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
1c0f0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c100 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20   xNext xNext;.. 
1c110 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 45         public xE
1c120 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20  of xEof;..      
1c130 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e    public xColumn
1c140 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   xColumn;..     
1c150 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64     public xRowId
1c160 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20   xRowId;..      
1c170 20 20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65    public xUpdate
1c180 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20   xUpdate;..     
1c190 20 20 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e     public xBegin
1c1a0 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20   xBegin;..      
1c1b0 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78    public xSync x
1c1c0 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70  Sync;..        p
1c1d0 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
1c1e0 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
1c1f0 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
1c200 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20   xRollback;..   
1c210 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e       public xFin
1c220 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
1c230 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  unction;..      
1c240 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65    public xRename
1c250 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20   xRename;..     
1c260 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64     /* The method
1c270 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76  s above are in v
1c280 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20  ersion 1 of the 
1c290 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
1c2a0 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63           * objec
1c2b0 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20  t.  Those below 
1c2c0 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  are for version 
1c2d0 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a  2 and greater. *
1c2e0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1c2f0 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  c xSavepoint xSa
1c300 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20  vepoint;..      
1c310 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73    public xReleas
1c320 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20  e xRelease;..   
1c330 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c       public xRol
1c340 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63  lbackTo xRollbac
1c350 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  kTo;..    }.... 
1c360 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c3b0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1c3c0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1c3d0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1c3e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1c3f0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20   sqlite3_vtab.. 
1c400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1c410 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64  blic IntPtr pMod
1c420 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ule;..        pu
1c430 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f  blic int nRef; /
1c440 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44  * NO LONGER USED
1c450 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1c460 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d  lic IntPtr zErrM
1c470 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  sg;..    }....  
1c480 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
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 0d 0a 0d  /////////////...
1c4d0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1c4e0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1c4f0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1c500 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1c510 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
1c520 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sor..    {..    
1c530 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1c540 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d  r pVTab;..    }.
1c550 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1c560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5a0 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
1c5b0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
1c5c0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
1c5d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c5e0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
1c5f0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  ex_constraint.. 
1c600 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1c610 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
1c620 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  ex_constraint(..
1c630 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1c640 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
1c650 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  t constraint..  
1c660 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1c670 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1c680 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1c690 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
1c6a0 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c  nstraint != null
1c6b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1c6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c6d0 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73    iColumn = cons
1c6e0 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d  traint.iColumn;.
1c6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c700 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74   op = constraint
1c710 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .op;..          
1c720 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63        usable = c
1c730 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65  onstraint.usable
1c740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1c750 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d     iTermOffset =
1c760 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72   constraint.iTer
1c770 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  mOffset;..      
1c780 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c790 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c7f0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
1c800 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
1c810 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
1c820 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b  ConstraintOp op;
1c830 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c840 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20   byte usable;.. 
1c850 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1c860 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t iTermOffset;..
1c870 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1c880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c8d0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
1c8e0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
1c8f0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
1c900 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
1c910 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
1c920 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1c930 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
1c940 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a  index_orderby(..
1c950 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1c960 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f  teIndexOrderBy o
1c970 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20  rderBy..        
1c980 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1c990 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
1c9a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c9b0 20 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20      if (orderBy 
1c9c0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1c9d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c9e0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
1c9f0 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75   = orderBy.iColu
1ca00 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
1ca10 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65       desc = orde
1ca20 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20  rBy.desc;..     
1ca30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ca40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1ca50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1caa0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
1cab0 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20  lumn; /* Column 
1cac0 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20  number */..     
1cad0 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 64     public byte d
1cae0 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66  esc;   /* True f
1caf0 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20  or DESC.  False 
1cb00 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20  for ASC. */..   
1cb10 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1cb70 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1cb80 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1cb90 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1cba0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1cbb0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1cbc0 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20  _usage..    {.. 
1cbd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
1cbe0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
1cbf0 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20  traint_usage(.. 
1cc00 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1cc10 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
1cc20 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  Usage constraint
1cc30 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20  Usage..         
1cc40 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
1cc50 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
1cc60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1cc70 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
1cc80 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d  tUsage != null).
1cc90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccb0 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73  argvIndex = cons
1ccc0 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76  traintUsage.argv
1ccd0 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
1cce0 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63          omit = c
1ccf0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f  onstraintUsage.o
1cd00 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mit;..          
1cd10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1cd20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1cd80 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65  lic int argvInde
1cd90 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e  x; /* if >0, con
1cda0 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20  straint is part 
1cdb0 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74  of argv to xFilt
1cdc0 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  er */..        p
1cdd0 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b  ublic byte omit;
1cde0 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63       /* Do not c
1cdf0 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74  ode a test for t
1ce00 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a  his constraint *
1ce10 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
1ce20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ce70 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1ce80 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1ce90 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1cea0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1ceb0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
1cec0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1ced0 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20   /* Inputs */.. 
1cee0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1cef0 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f  t nConstraint; /
1cf00 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72  * Number of entr
1cf10 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69  ies in aConstrai
1cf20 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  nt */..        p
1cf30 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f  ublic IntPtr aCo
1cf40 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20  nstraint;..     
1cf50 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f     public int nO
1cf60 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75  rderBy;    /* Nu
1cf70 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
1cf80 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a  in aOrderBy */..
1cf90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
1cfa0 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d  ntPtr aOrderBy;.
1cfb0 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70  .        /* Outp
1cfc0 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
1cfd0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
1cfe0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d  onstraintUsage;.
1cff0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1d000 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
1d010 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
1d020 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
1d030 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20   the index */.. 
1d040 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1d050 72 69 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20  ring idxStr;    
1d060 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70      /* String, p
1d070 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64  ossibly obtained
1d080 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
1d090 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lloc */..       
1d0a0 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64   public int need
1d0b0 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a  ToFreeIdxStr; /*
1d0c0 20 46 72 65 65 20 69 64 78 53 74 72 20 75 73 69   Free idxStr usi
1d0d0 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ng sqlite3_free(
1d0e0 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20  ) if true */..  
1d0f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1d100 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
1d110 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
1d120 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
1d130 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
1d140 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
1d150 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
1d160 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
1d170 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
1d180 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
1d190 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65     public long e
1d1a0 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20  stimatedRows;   
1d1b0 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d  /* Estimated num
1d1c0 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75  ber of rows retu
1d1d0 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  rned */..       
1d1e0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
1d1f0 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67  dexFlags idxFlag
1d200 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51  s; /* Mask of SQ
1d210 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f  LITE_INDEX_SCAN_
1d220 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20  * flags */..    
1d230 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20      public long 
1d240 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20  colUsed;        
1d250 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20   /* Input: Mask 
1d260 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20  of columns used 
1d270 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d  by statement */.
1d280 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
1d290 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1d2a0 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
1d2b0 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
1d2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d300 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
1d310 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  n .NET Compact F
1d320 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20  ramework (only) 
1d330 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43  CriticalHandle C
1d340 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f  lass..#if PLATFO
1d350 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d360 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
1d370 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
1d380 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
1d390 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
1d3a0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
1d3b0 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
1d3c0 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
1d3d0 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
1d3e0 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
1d3f0 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
1d400 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
1d410 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
1d420 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
1d430 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
1d440 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
1d450 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
1d460 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
1d470 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
1d480 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
1d490 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
1d4a0 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
1d4b0 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
1d4c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
1d4d0 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
1d4e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
1d4f0 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
1d500 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
1d510 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
1d520 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d530 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
1d540 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
1d550 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
1d560 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
1d570 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1d580 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
1d590 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
1d5a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
1d5b0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
1d5c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
1d5d0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
1d5e0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1d5f0 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
1d600 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
1d610 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
1d620 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
1d630 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
1d640 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
1d650 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
1d660 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
1d670 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
1d680 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
1d690 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
1d6a0 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
1d6b0 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
1d6c0 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
1d6d0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
1d6e0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
1d6f0 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
1d700 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
1d710 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
1d720 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
1d730 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
1d740 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
1d750 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
1d760 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
1d770 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
1d780 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
1d790 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
1d7a0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
1d7b0 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
1d7c0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
1d7d0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
1d7e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
1d7f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d850 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1d860 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
1d870 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
1d880 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
1d890 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
1d8a0 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
1d8b0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
1d8c0 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
1d8d0 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
1d8e0 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
1d8f0 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
1d900 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
1d910 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1d920 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
1d930 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
1d940 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d950 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1d960 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
1d970 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
1d980 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
1d990 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1d9a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1d9b0 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
1d9c0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
1d9d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
1d9e0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
1d9f0 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
1da00 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
1da10 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1da20 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1da30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1da40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1da90 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1daa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1dab0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
1dac0 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
1dad0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1dae0 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
1daf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1db50 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
1db60 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
1db70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1db80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1dbc0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1dbd0 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1dbe0 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1dbf0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
1dc00 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
1dc10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1dc20 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
1dc30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1dc40 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1dc50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1dc70 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
1dc80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1dc90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1dca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dcb0 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
1dcc0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1dcd0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1dce0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1dcf0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1dd00 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
1dd10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1dd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
1dd70 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
1dd80 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
1dd90 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
1dda0 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
1ddb0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
1ddc0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
1ddd0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1dde0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ddf0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1de00 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1de10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1de20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1de30 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
1de40 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
1de50 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1de60 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
1de70 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
1de80 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1de90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1dea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1deb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ded0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dee0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
1def0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
1df00 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
1df10 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
1df20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
1df30 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1df40 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
1df50 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
1df60 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
1df70 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
1df80 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1df90 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
1dfa0 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
1dfb0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
1dfc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1dfd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e020 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
1e030 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
1e040 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
1e050 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
1e060 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1e070 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e080 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1e090 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1e0a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1e0b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e0c0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
1e0d0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
1e0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1e0f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
1e100 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1e110 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
1e120 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e130 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1e140 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
1e150 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
1e160 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
1e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e180 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
1e190 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
1e1a0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
1e1b0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
1e1c0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
1e1d0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1e1e0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1e1f0 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
1e200 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
1e210 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
1e220 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1e230 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
1e240 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1e250 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1e260 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1e270 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
1e280 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
1e290 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
1e2a0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
1e2b0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1e2c0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1e2d0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1e2f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e300 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
1e310 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
1e320 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
1e330 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e340 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1e350 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1e360 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1e370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e380 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
1e390 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
1e3a0 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
1e3b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1e3c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e3d0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e400 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
1e410 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1e420 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1e430 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1e440 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e450 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
1e460 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1e470 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1e480 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
1e4b0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
1e4c0 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
1e4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e4e0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1e4f0 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1e500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e510 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e520 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1e530 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1e540 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1e550 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1e560 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
1e570 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
1e580 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
1e590 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1e5c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1e5d0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
1e5e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
1e5f0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
1e600 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
1e610 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
1e620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1e630 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
1e640 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
1e650 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1e660 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1e670 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1e680 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1e690 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e6c0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
1e6d0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
1e6e0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1e6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e700 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1e710 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1e720 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1e730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1e740 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
1e750 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
1e760 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1e770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e780 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
1e790 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
1e7a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1e7c0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
1e7d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e7e0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
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 66 69 6e  .            fin
1e810 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
1e820 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1e830 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e840 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1e850 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1e860 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e890 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
1e8a0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
1e8b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1e8c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1e8d0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1e8e0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1e8f0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
1e900 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1e910 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1e920 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e930 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e970 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1e980 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1e990 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1e9a0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
1e9b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1e9c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e9d0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1e9e0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
1e9f0 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ata.connectionCo
1ea00 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
1ea10 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1ea20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ea70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
1ea80 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
1ea90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1eaa0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1eab0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1eac0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ead0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1eae0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1eaf0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1eb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1eb10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1eb20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
1eb30 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
1eb40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1eb50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1eb60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1eb70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ebc0 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1ebd0 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
1ebe0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
1ebf0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
1ec00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1ec10 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1ec20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1ec40 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1ec50 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ec60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ec70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1ec80 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
1ec90 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
1eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1ecc0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ecd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ed20 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
1ed30 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
1ed40 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
1ed50 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
1ed60 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1ed70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ed80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
1ed90 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1eda0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1edb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1edc0 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
1edd0 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
1ede0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1edf0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1ee00 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
1ee10 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ee70 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
1ee80 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
1ee90 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
1eea0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
1eeb0 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
1eec0 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
1eed0 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
1eee0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
1eef0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
1ef00 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
1ef10 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
1ef20 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
1ef30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ef40 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
1ef50 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
1ef60 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
1ef70 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
1ef80 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1ef90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1efe0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
1eff0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1f000 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
1f010 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f060 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f070 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
1f080 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
1f090 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1f0a0 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
1f0b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f0c0 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
1f0d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1f0e0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1f0f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f100 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1f110 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
1f120 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1f130 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1f140 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f150 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f160 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
1f170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1f190 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1f1a0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1f1b0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1f1c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1f1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f210 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
1f220 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
1f230 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
1f240 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
1f250 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
1f260 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1f270 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
1f280 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1f290 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f2a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1f2b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1f2c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1f2d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f2e0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
1f2f0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
1f300 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1f310 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
1f320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f330 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1f340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f380 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f390 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
1f3a0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
1f3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1f3c0 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
1f3d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1f3e0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
1f400 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
1f410 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
1f420 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
1f430 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1f440 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1f450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1f4a0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
1f4b0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
1f4c0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
1f4d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f4e0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1f4f0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
1f500 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f510 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1f520 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
1f530 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
1f540 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
1f550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f560 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
1f570 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
1f580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f590 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1f5a0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1f5b0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1f5c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1f5d0 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
1f5e0 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
1f5f0 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
1f600 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1f610 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f630 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1f640 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f650 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1f660 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
1f670 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
1f680 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6a0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1f6b0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6d0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
1f6e0 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20  tatement: {0}", 
1f6f0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
1f700 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1f710 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1f730 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
1f740 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f750 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1f760 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
1f770 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1f780 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
1f790 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
1f7c0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1f800 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
1f810 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
1f820 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
1f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f840 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
1f850 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f880 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
1f890 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1f8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1f8b0 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1f8c0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
1f8d0 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
1f8e0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
1f8f0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1f900 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1f910 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
1f920 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
1f930 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1f940 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1f950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1f960 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
1f970 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1f980 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1f990 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1f9a0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
1f9b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1f9c0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1f9d0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1f9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f9f0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1fa00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1fa10 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1fa20 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1fa30 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1fa40 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1fa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa60 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1fa70 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa90 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1faa0 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
1fab0 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
1fac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fad0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
1fae0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1faf0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1fb00 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fb10 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1fb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fb40 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1fb50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fb60 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
1fb70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1fb80 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1fb90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1fbb0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
1fbc0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
1fbd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1fbf0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
1fc00 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
1fc10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fc20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
1fc30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1fc40 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
1fc50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1fc60 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
1fc70 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1fc80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcd0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
1fce0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1fcf0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
1fd00 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
1fd10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fd20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
1fd30 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
1fd40 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
1fd50 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1fd60 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1fd70 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1fdd0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1fde0 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
1fdf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fe00 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1fe10 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1fe20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fe30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1fe40 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1fe50 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1fe60 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1fe70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1fe80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1fe90 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
1fea0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1feb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1fec0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1fed0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1fee0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1ff30 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1ff40 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1ff50 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
1ff60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1ff70 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1ff80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ff90 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1ffa0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1ffb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1ffc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ffd0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
1ffe0 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
1fff0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20000 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
20010 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
20020 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
20030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20070 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
20080 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
20090 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
200a0 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
200b0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
200c0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
200d0 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
200e0 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
200f0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
20100 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
20110 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
20120 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
20130 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
20140 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20150 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
20160 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
20170 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
20180 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
20190 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
201a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
201f0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
20200 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
20210 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
20220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20260 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20270 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
20280 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
20290 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
202a0 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
202b0 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
202c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
202d0 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
202e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
202f0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
20300 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
20320 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
20330 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
20340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20360 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
20370 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
20380 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
20390 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
203a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
203b0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
203c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
203d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
203e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20420 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
20430 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
20440 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
20450 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
20460 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
20470 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
20480 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
20490 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
204a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
204b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
204c0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
204d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
204e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
204f0 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
20500 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
20510 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
20520 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
20530 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20540 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20590 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
205a0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
205b0 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
205c0 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
205d0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
205e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
205f0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
20600 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
20610 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
20620 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
20630 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
20640 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
20650 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
206a0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
206b0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
206c0 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
206d0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
206e0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
206f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
20700 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20710 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
20730 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
20740 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
20750 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
20760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20770 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
20780 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
20790 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
207a0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
207b0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
207c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207d0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
207e0 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
207f0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
20800 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
20810 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
20820 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
20830 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
20840 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20860 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
20870 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
20880 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
20890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208a0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
208b0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
208c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
208d0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
208e0 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c  hBackup: {0}", l
208f0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
20900 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
20910 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
20930 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
20940 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20950 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
20960 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
20970 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
20980 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
20990 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
209a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209b0 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
209c0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
209d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
209f0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
20a00 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
20a10 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ckup(cnn, handle
20a20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
20a30 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
20a40 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
20a50 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
20a60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
20a70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
20a80 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
20a90 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
20aa0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
20ab0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
20ac0 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
20ad0 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
20ae0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
20af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20b00 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
20b10 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
20b20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
20b30 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
20b40 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
20b50 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
20b60 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
20b70 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
20b80 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
20b90 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
20ba0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
20bb0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
20bc0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
20bd0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
20be0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
20bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c10 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
20c20 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
20c30 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
20c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20c50 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
20c60 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
20c70 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
20c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
20c90 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
20ca0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
20cb0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
20cc0 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
20cd0 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
20ce0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
20cf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20d00 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
20d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20d30 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
20d40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
20d50 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
20d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
20d70 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
20d80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20da0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
20db0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20dc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20de0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
20df0 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
20e00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20e10 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
20e20 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
20e30 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
20e40 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
20e50 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
20e60 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20e70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
20e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
20ed0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
20ee0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
20ef0 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
20f00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20f10 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
20f20 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
20f30 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
20f40 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
20f50 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
20f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
20fc0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
20fd0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
20fe0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20ff0 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
21000 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
21010 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21020 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
21030 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
21040 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
21050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21060 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21070 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21080 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
21090 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
210a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
210b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
210c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
210d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
210e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21110 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
21120 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
21130 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
21140 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
21150 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
21160 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
21170 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21180 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
21190 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
211a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
211b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211c0 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
211d0 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
211e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
211f0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
21200 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
21210 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
21220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21260 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
21270 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48  gion SQLiteBlobH
21280 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
21290 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
212a0 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
212b0 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
212c0 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65  SQLite blob obje
212d0 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
212e0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
212f0 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
21300 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
21310 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
21320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
21340 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
21350 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
21360 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
21370 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
21380 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
213d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
213e0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
213f0 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
21400 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21450 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
21460 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
21470 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
21480 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  r(SQLiteBlobHand
21490 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  le blob)..      
214a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
214b0 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c   if (blob != nul
214c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
214d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
214e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
214f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21500 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e    lock (blob.syn
21510 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
21520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21530 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21540 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c         return bl
21550 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ob.handle;..    
21560 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
21570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
21580 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
21590 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
215a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
215b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
215c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21600 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
21610 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
21620 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
21630 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
21640 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  Ptr blob)..     
21650 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
21660 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
21670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
21690 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
216a0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
216b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
216c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
216d0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
216e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216f0 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b  SetHandle(blob);
21700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
21710 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21720 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21770 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
21780 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
21790 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
217a0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
217b0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
217c0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
217d0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
217e0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
217f0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
21800 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
21810 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21820 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
21830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21870 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
21880 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
21890 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
218a0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
218b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
218c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
218d0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
218e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
218f0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
21900 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
21910 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
21920 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
21930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21940 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
21950 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
21960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21970 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
21980 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
21990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
219a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
219b0 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20  .CloseBlob(cnn, 
219c0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
219d0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
219e0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
219f0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
21a00 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
21a10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a30 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
21a40 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
21a50 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
21a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a70 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
21a80 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
21a90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
21ab0 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f  seBlob: {0}", lo
21ac0 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
21ad0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
21ae0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21af0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
21b00 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
21b10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21b20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
21b30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
21b40 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
21b50 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
21b60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b80 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
21b90 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
21ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
21bd0 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
21be0 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
21bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c00 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
21c10 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
21c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21c30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
21c40 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
21c50 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
21c60 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
21c70 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
21c80 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
21c90 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
21ca0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
21cb0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
21cc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21cd0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
21ce0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
21cf0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
21d00 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
21d10 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
21d20 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
21d30 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
21d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
21d50 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
21d60 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
21d70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
21d80 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
21d90 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
21da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21db0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
21dc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
21de0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
21df0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
21e00 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
21e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
21e30 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
21e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e50 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
21e60 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  ob: {0}, excepti
21e70 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
21e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e90 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
21ea0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
21eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
21ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ed0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
21ee0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21ef0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
21f00 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21f10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21f20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
21f30 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
21f40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21f50 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21f60 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
21f70 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
21f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21fa0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
21fb0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
21fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
21fe0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
21ff0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
22000 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
22010 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22020 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
22030 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
22040 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
22090 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
220a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
220b0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
220c0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
220d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
220e0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
220f0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
22100 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
22110 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
22120 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
22130 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22180 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
22190 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
221a0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
221b0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
221c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
221d0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
221e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
221f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
22200 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
22210 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
22220 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
22240 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
22250 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
22260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
22280 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
22290 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
222a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
222e0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
222f0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
22300 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
22310 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
22320 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
22330 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22340 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
22350 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
22360 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
22370 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22380 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
22390 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
223a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
223b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
223c0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
223d0 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..